문서유형ㅣ기술정보
분야ㅣ인터페이스/연동
적용제품버전ㅣTibero6 FS07
문서번호ㅣTIITI050
개요
본 글은 Python 애플리케이션에서 Tibero 데이터베이스에 연동하는 방법에 대해 설명합니다.
ODBC 기반의 연동 방식을 사용하며, Python 환경 설정부터 Tibero Client 및 ODBC 설정, 연결 테스트 및 Python 샘플 코드 실행까지의 전체 절차를 포함합니다.
본 글에서 설명하는 구성 환경은 다음과 같습니다.
OS : CentOS 7
Python : 3.6 (IP: 192.168.41.149)
Tibero : Tibero6 FS07 (IP: 192.168.41.148)
방법
1. Python 설치
Python 3 설치
root 계정으로 아래 명령어를 실행합니다.
yum install python3-devel
Python 설정 변경 (선택 사항)
기존 Python 2.7이 설치된 환경에서 Python 3.6을 추가 설치한 경우입니다.
현재 Python 버전 및 경로 확인
python -Vwhich python
OS 기본 Python 설정 변경
update-alternatives --install /bin/python python /bin/python2.7 1update-alternatives --install /bin/python python /bin/python3.6 2update-alternatives --config python(2번 선택)python -Vln -s /bin/pip3.6 /bin/pippip -V
Python 기본 버전 변경으로 인해 yum 오류가 발생하는 경우 아래 파일의 첫 줄을 수정합니다.
수정해야할 파일명 : /usr/bin/yum
첫번째 라인 #!/usr/bin/python 부분을 #!/usr/bin/python2.7 로 변경정해야할 파일명 : /usr/libexec/urlgrabber-ext-down
첫번째 라인 #!/usr/bin/python 부분을 #!/usr/bin/python2.7 로 변경
2. ODBC 설치
unixODBC 설치
yum install unixODBC-devel
pyodbc 설치
yum install gcc-c++pip3 install pyodbc
(Python 설정에 따라pip명령어 사용 가능)
odbc.ini 설정
/etc/odbc.ini 또는 사용자 홈 디렉터리의 .odbc.ini 파일을 생성하여 설정합니다.
1) tbdsn.tbr을 사용하는 경우
[ODBC Data Sources] [ODBC] [tibero6] => 위의 빨간색명과 일치 필요 |
2) tbdsn.tbr을 사용하지 않는 경우
[ODBC Data Sources] [ODBC] [tibero6] => 위의 빨간색명과 일치 필요 |
3. Tibero Client 설치
tbdsn.tbr 설정
Tibero 접속 정보를 다음과 같이 설정합니다.
tibero=(
(INSTANCE=(HOST=192.168.41.148)
(PORT=8629)
(DB_NAME=tibero)
)
)tbsql 연결 테스트 (Client 설치 시에만 가능)
사용자 profile에 환경 변수를 추가합니다.
export TB_HOME=/home/python/tibero6/ export PATH=.:$TB_HOME/client/bin:$PATH export LD_LIBRARY_PATH=.:$TB_HOME/client/lib:$LD_LIBRARY_PATH
이후 아래 명령어로 접속을 테스트합니다.
tbsql tibero/tmax@tibero
4. ODBC 연결 테스트
isql -v tibero6
5. Python과 Tibero 연동
pyodbc import 확인
test.py 파일을 아래 내용으로 생성 후 python test.py 수행시 오류가 없어야 합니다.
import pyodbc
Python Sample 코드를 통한 연동 테스트
import pyodbc db = pyodbc.connect('DSN=tibero6;UID=tibero;PWD=tmax') db.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8') cursor = db.cursor() cursor.execute('select * from python_test;') for x in data: cursor.close() |
빨간 코드는 Encoding 관련 오류 발생 시 추가가 필요합니다.