문서유형ㅣ기술정보
분야ㅣ인터페이스/연동
적용제품버전ㅣ 7FS02PS
문서번호ㅣTIITI048
개요
본 문서는 Python + Tibero 연동 방법에 대해 기술합니다.
테스트 환경
OS : RHEL 10
DB : Tibero 7.2.4
Python : 3.12
방법
1. Python 설치 (root로 수행)
A. Python3 설치
yum install python3-devel
B. Python 설정 변경 (선택사항)
해당 환경에서는 2.7 버젼이 설치되어 있었고 3.12를 추가 설치 하였습니다.
1) OS에서 설정된 Python 버젼 및 위치 확인
python –V
which python
2) OS 기본 Python 설정 변경
update-alternatives --install /bin/python python /bin/python2.7 1
update-alternatives --install /bin/python python /bin/python3.12 2
update-alternatives --config python (2번 선택)
python -V
ln -s /bin/pip3.6 /bin/pip
pip -V
3) yum 오류로 인한 설정 변경
OS 기본 버젼 python 변경 후 yum 수행시 오류가 발생할 경우 아래 작업을 수행 합니다
- /usr/bin/yum , /usr/libexec/urlgrabber-ext-down 파일에서 첫번째 라인 #!/usr/bin/python 부분을
#!/usr/bin/python2.7 로 변경 합니다
2. ODBC 설치
A. ODBC 설치
yum install unixODBC (unixODBC-devel은 rhel 9 부터는 기본 제공 되지 않습니다)
B. pyodbc 설치
yum install gcc-c++
pip3 install pyodbc (1.B 항목 설정했을 경우 pip3가 아닌 pip 명령어로 설치 가능합니다)
C. iodbc.ini 설정
/etc/odbc.ini 또는 유저 홈의 .odbc.ini 설정 (생성필요)
1) tbdsn.tbr 설정할 경우
[ODBC Data Sources] [ODBC] [tibero7] => 위의 빨간색명과 일치 필요 |
2) tbdsn.tbr 설정하지 않을 경우
[ODBC Data Sources] [ODBC] [tibero7] => 위의 빨간색명과 일치 필요 Server = 192.168.131.128 => 접속할 티베로 IP Port = 8629 => 접속할 티베로 Port Database = TDB1 => 접속할 티베로 DB Name |
3. Tibero Client 설치
A. tbdsn.tbr 설정
TDB1 =( (INSTANCE=(HOST=192.168.131.128 ) (PORT=8629) (DB_NAME=TDB1 ) ) ) |
B. 환경변수 설정
유저 프로파일에 아래 내용을 추가합니다
export TB_HOME=/home/python/tibero/ export PATH=.:$TB_HOME/client/bin:$PATH export LD_LIBRARY_PATH=.:$TB_HOME/client/lib:$LD_LIBRARY_PATH
|
C. tbsql을 통한 연결 테스트 (Tibero Client 설치했을 경우만 테스트 가능)
tbsql tibero/tmax@TDB1
4. ODBC 연결 테스트
A. tbdsn.tbr 설정
isql -v tibero7 수행으로 테스트 진행이 필요합니다
5. Python + Tibero 연동
A. pyodbc import 확인
test.py 파일을 아래 내용으로 생성 후 python test.py 수행 시 오류가 없어야 합니다
| import pyodbc |
B. Python Sample 코드를 통한 연동 테스트
아래 샘플 소스 수행. Python3 이상 이라면 export TBCLI_WCHAR_TYPE=ucs2 환경 설정이 필요 합니다
import pyodbc
db = pyodbc.connect ('DSN=tibero;UID=tibero;PWD=tmax') db.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8') db.setdecoding(pyodbc.SQL_WCHAR, encoding='utf-8') db.setdecoding(pyodbc.SQL_WMETADATA, encoding='utf-32le') db.setencoding(encoding='utf-8') cursor = db.cursor()
cursor.execute('select * from python_test;') data = cursor.fetchall()
for x in data: print (x[0]) --python for문 다음 구문은 들여쓰기가 되어야 합니다
cursor.close() db.close()
빨간 코드는 Encodnig 관련 오류 발생시 추가 필요합니다 |