Oracle 데이터와 연동
※ 사용자마다 다를 수 있는 부분들은 별도의 색으로 표기했습니다.
※ 변수명은 본인이 사용하기 편한 변수명을 사용하시면 됩니다.
모듈 import
import pandas as pd
from pandas import DataFrame
import cx_Oracle
- cx_Oracle이 설치가 안되어 있는 경우
→ !pip install cx_Oracle
Oracle과 Python(Pandas) 연동
dsn = cx_Oracle.makedsn('localhost',1521,'xe')
conn = cx_Oracle.connect('local-hr','hr',dsn)
- cx_Oracle.makedsn('host',port,'sid')의 형식으로 입력
→ oracle에서 가져오고 싶은 DB에 커서를 대면 쉽게 알 수 있음!
- cx_Oracle.connect('DB명','DB비밀번호',dsn)
데이터 가져오기
cursor = conn.cursor()
cursor.execute("SELECT * FROM JOBS")
x = cursor.fetchall()
- cursor와 select문을 이용해 해당 DB내의 테이블 조회
- fetchall()을 통해 데이터 읽어들이기
→ list형태로 데이터를 가져옴
DataFrame 만들기
df_oracle = DataFrame(x)
df_oracle
Column명 지정
기존 Column명을 가져오고 싶을 때는 별도의 지정 필요 [위 그림의 빨간색 표시부분 참고]
cursor.execute("select column_name from user_tab_columns where table_name = 'JOBS'")
col = cursor.fetchall()
df_oracle.columns = col
df_oracle
- cursor를 통해 sql문 작성
→ 데이터를 가져온 JOBS테이블로부터 컬럼 가져오기
→ 이때, 테이블명은 대소문자를 구분해줘야됨!!
- 파이썬에서 컬럼명을 변경
→ 데이터프레임명.columns=['컬럼명1','컬럼명2']
→ fetchall을 통해 가져온 데이터는 튜플이 내장된 리스트형식
컬럼명으로 테이블명만 사용하기
col_new = [j for i in col for j in i]
df_oracle.columns = col_new
df_oracle
- fetchall을 통해 가져온 col 데이터는 튜플이 내장된 리스트형식
→ 따라서 컬럼명만 빼오기 위해서는 추가 작업이 필요
- 우선 for i in col 사용해서 튜플들을 빼온 뒤에 for j in i 를 사용하여 테이블명만 빼옴
→ 반복문 내에서 사용한 값들은 마지막 값만 출력됨
→ 아래에서는 반복문 안에서 print( )구문을 사용했으므로 반복문에서 나온 모든 값 출력
- 빈 리스트를 만든 후 빈리스트에 출력값을 넣으면 됨
→ [j for i in col for j in i]형식을 사용하면 훨씬 간편하게 표현 가능!
※ Oracle과 연결 끊기
cursor.close()
conn.close()
- cursor를 닫은 다음, DB와의 연결을 끊어준다!
댓글 영역