데이터 분석을 하다보면 당연히 다양한 데이터 소스에 접근하게 된다.

파일, 엑셀, 그리고 데이터베이스 까지... 이번에는 JDBC 로 데이터 접근을 하여 pandas의 Dataframe로 변경해봄


import os
import sys
import jpype
import jaydebeapi as jp
import pandas.io.sql as pd_sql
from pandas import DataFrame

# JAVA_HOME이 설정되어 있지 않을 경우 
if("JAVA_HOME" not in os.environ):
    os.environ["JAVA_HOME"] = "[JAVA_HOME path]"
    
# oracle jdbc 파일 경로 및 class 경로 설정
JDBC_Driver = '[jdbc Driver path]/ojdbc6.jar'
jar = r'[jdbc Driver path]/ojdbc6.jar'
args = '-Djava.class.path=%s' % jar

# 환경 변수 출력
print('Python Version : ', sys.version)
print('JAVA_HOME : ', os.environ["JAVA_HOME"])
print('JDBC_Driver Path : ', JDBC_Driver)
print('Jpype Default JVM Path : ', jpype.getDefaultJVMPath())

# java class path 설정
jpype.startJVM(jpype.getDefaultJVMPath(), args)

# oracle 접근
conn = jp.connect('oracle.jdbc.driver.OracleDriver','jdbc:oracle:thin:[user]/[password]@[oracle ip]:[oracle poart]/[sid]', JDBC_Driver)
cur = conn.cursor()

# Select Query 실행
sql = "SELECT * FROM TEST"
pd_sql.execute(sql, conn)
df = pd_sql.read_sql(sql, conn, index_col = None)

print df.head()

실행 결과 아래와 같다

('Python Version : ', '2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)]')
('JAVA_HOME : ', 'D:/Program Files/Java/jre1.8.0_45')
('JDBC_Driver Path : ', 'E:/9. Util/90.DB Driver/ojdbc6.jar')
('Jpype Default JVM Path : ', 'D:\\Program Files\\Java\\jre1.8.0_45\\bin\\server\\jvm.dll')
   PID USER_ID USER_PWD SEX
0    1   test1    test1   M
1    2   test2    test1   M
2    3   test3    test1   M
3    4   test4    test1   F
4    5   test5    test1   F
  1. jaejin 2017.12.06 15:32 신고

    질문이 있습니다! 파이썬은 2.x 버전인가요?

    • 불탄오징어 2017.12.07 12:04 신고

      안녕하세요. 본문 작성이 좀 오래됐는데 아마 2.x 대 버전으로 기억합니다 ^^

      최근에는 3.5버전을 사용 중입니다 ^^

+ Recent posts