본문 바로가기

Language/Python

파이썬 오라클 DB 연동과 에러 대처

728x90
반응형
이전 블로그에서 백업된 내용입니다.

개요

파이썬과 오라클DB를 연결하기 위한 라이브러리는 cx_Oracle이며 조사하면 이에 관한 글이 많이 나옵니다 파이썬 3.7.x 버전 기준으로 해당 라이브러리를 설치하고 이용해본 결과 에러가 발생했습니다. cx_Oracle 라이브러리와 오라클 db에 연결하기 위해 시도했던 내용을 남기고자 합니다.

 

설치하기

라이브러리 자체는 설치가 간단합니다. 윈도우 cmd 에서 다음과 같이 입력하면 됩니다. 
 $ pip install cx_oracle
pycharm을 이용해서 설치할 경우 cx-oracle로 검색하면 패키지가 검색됩니다. 검색된 cx-oracle 패키지로 다운로드 받으셔도 됩니다.
 

연동을 위해 필요한 것

cx_oracle 자체 패키지로는 오라클 db와 연결이 되지 않았습니다. 오라클에서 제공하는 instant client 가 필요합니다. https://www.oracle.com/technetwork/topics/winx64soft-089540.html 사이트에 접속하면 다음과 같은 instantclient를 다운로드 받을 수 있습니다.

다운로드를 다 받고 압축을 푼 다음 압축을 푼 경로를 환경변수 ( System 환경변수) 에 추가하면 끝입니다.

사용하기

cx_Oracle에 빨간 줄은 무시해도 됩니다. 처음에는 import 못하는 것인가 했지만 정상적으로 작동이 됩니다. 대략적인 사용 방법은 아래 이미지와 같습니다. connect() 메소드로 연결이 가능하고 첫 번째 인자에 DB에 접속할ID ,두 번째 인자로 DB에 접속할 Password ,세 번째 인자로 DB서버IP:포트:sid가 필요합니다 

DB_ID가 "user"이고 DB_Password가 "1234" 이고 DB서버IP가 127.0.0.1이고 DB_Port가 1521이고 연결할 sid가 xe 이면 다음과 같이 쓸수 있습니다 -> cx_Oracle.connect("user","1234","127.0.0.1@1521/xe")

만약 insert into로 테이블에 값을 집어넣고 싶을 땐 다음과 같은 문법을 쓰면 됩니다.

query = "insert into nursery VALUES(:column_name1,:column_name2)"
cur.execute(query,column_name1="param1",column_name2="param2")

 

Error Note

제 경우에는 cx_Oracle을 처음 설치하고 나서 다음과 같은 에러가 발생했습니다.

읽었을 때 Oracle Client 버전이 0.0이고 11.2 혹은 더 높은 버전이 필요하단 걸로 보입니다. 위에서 기술한 instant_client의 환경변수 설정이 이 환경에서는 잡지 못하고 있습니다. 해결하기 전의 환경은 다음과 같습니다

Python Version: Python3.7.3
PlatForm: Windows7
IDE: Pycharm 2019.1 
 

 

환경변수 설정에서 instantclient 경로를 못 찾나 싶어서 여러 삽질을 했지만 환경변수 설정은 문제 없었고 단순히 Python Version을 다운그레이드 시켜 해결했습니다. 변경 후 환경에서는 다음과 같습니다.

Python Version: Python3.6.7
PlatForm: Windows7
IDE: Pycharm 2019.1 
 

 

728x90
반응형