본문 바로가기
Data Analysis/Python

[Python] jdbc로 Database(Oracle) 접근하기

by 불탄오징어 2015. 12. 3.
반응형

 

 

데이터 분석을 하다보면 당연히 다양한 데이터 소스에 접근하게됩니다. 파일, 엑셀, 그리고 데이터베이스 까지... 이번에는 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

댓글