상세 컨텐츠

본문 제목

[개미의 걸음 Pandas 4차시] Oracle과 연동(.makedsn, .connect, .cursor, .execute)

Python

by IT개미 데이터 2021. 1. 4. 07:07

본문

728x90

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와의 연결을 끊어준다!
728x90

관련글 더보기

댓글 영역