본문 바로가기

06. Programming/iii.Python 2.x~3.x

cx_Oracle 연동 (python)


#!/usr/bin/python
import cx_Oracle
con=cx_Oracle.connect("userid","passwd","SID")
c=con.cursor()
c.execute('select * from test')
rows = c.fetchall()
for r in rows:
        print r[0],r[1],r[2]
c.close()
con.close()

위 처럼하였고, 결과값은 튜플을통해서 r을 인쇄한다.......어찌보면 select문에서 처리도 가능하지만...여기서도 꼼수로 가능하다. 더불어 한글이 utf-8이 정상적이지 않기때문에 이 튜플 그 값 자체를 print해야지 한글이 깨지지 않는다..
================================================================================================
당근 오라클 클라이언트가 설치가 되어져 있어야 하며 sqlplus가 접속이 되어져야 한다..

그리고 cx_Oracle에서 보면 ID@PASS/SID로 넣으라고 하는데, 잘못된 정보는 아니지만 그것은 구버전이고 최신버전은 " 으로 작업을 해야하니 주의가 필요하다...(python 2.4 + cx_Oracle-5.0.2-10g-py24-1.x86_64.rpm) 작업

============================================================
간만에 update [2010.08.10]
테이블 명이 한글인 경우가 있다... (이런 쉚)
# -*- coding: utf-8 -*- 을 추가해주고...
한글 테이블명을 SELECT 할때에는 double quota로 묶어주자

그리고 최근에 보니 5.0.4로 업데이트가 되어지고 난 이후에 import cx_Oracle을 해보니 libclntsh.so.xx.x 파일을 못찾는경우가 있다..

LD_LIBRARY_PATH 와 ORACLE_HOME을 적절히 사용하자
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME:. export LD_LIBRARY_PATH

안되면 ORACLE_HOME에 libclntsh.so.xx.x 파일을 link를 붙여 버리자 (귀찮으면 후자방법 강추...ㅋㅋㅋ)

===============================================================
한글 oracle charset
NLS_LANG=KOREAN_KOREA.KO16MSWIN949 -> windows cp949 charset
NLS_LANG=KOREAN_KOREA.KO16KSC5601 -> ios? iso? charset인걸로 알고 있다..
※한글에는 utf-8도 있다

아래는 oracle charset확인 방법
select userenv('LANGUAGE') from dual;