반응형

Python, Ubuntu, Tibero, ODBC

[참조] https://blog.boxcorea.com/wp/archives/2881

[참조] https://m.blog.naver.com/redmirage/221764055444

 

Tibero(티베로)티맥스 소프트에서 2006년에 개발한 한국산 DBMS이다. RDBMS이며, 데이터베이스 클러스터링, 병렬 쿼리 처리, 쿼리 옵티마이저 기능을 제공한다. 또한 SQL 등을 포함해서 오라클 제품과 거의 동일한 호환성을 제공한다.

티베로를 사용하기 위해 ODBC 드라이버를 사용해야 하는 이유는 다른 블로거 글을 참고하기 바란다.

 

1. 우분투에  ODBC 설치 

# sudo apt install build-essential
# sudo apt install libssl-dev python3-dev
# sudo apt install unixodbc unixodbc-dev

 

2.  tibero 서버에 있는 libtbodbc.so 파일을 /home/tibero/client/ 경로에 복사

     (또는 tibero  클라이언트 설치)

 

3. /etc/odbcinst.ini 파일에 ODBC 드라이버 이름(Tibero6) 설정

# cat /etc/odbcinst.ini
[Tibero6]
Description = Tibero6 ODBC driver
Driver = /home/tibero/client/libtbodbc.so
Setup = /home/tibero/client/libtbodbc.so
Setup = 1
FileUsage = 1

 

4. MYDB라는 이름으로 ODBC를 설정 (이후 ODBC 접속은 MYDB라는 DSN 사용)

# cat /etc/odbc.ini
[ODBC]
Trace = 1
TraceFile = /tmp/odbc.trace

[MYDB]
Trace = no
Driver = Tibero6
Description = Tibero6 ODBC Datasource
# ConnectionType = Direct
SERVER = 192.168.100.41
PORT = 8629
# AuthenticationType=No Authentication
SID = tibero
User = tiberotest
Password = tiberotest
Database = tibero

 

5. ODBC 접속 시험 (isql 명령)

$ isql MYDB
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select * from test;
+------------------------------------------------------+
| IDX                                                  |
+------------------------------------------------------+
| 13                                                   |
| 12                                                   |
| 14                                                   |
+------------------------------------------------------+
SQLRowCount returns 3
3 rows fetched
SQL> exit

 

6. python 코드 작성

# tibero_odbc.py
import pyodbc

try:
    # DB 연결
    user = 'tiberotest'
    passwd = 'tiberotest'
    sql = 'select * from test;'
    conn = pyodbc.connect('DSN=MYDB;UID='+user+';PWD='+passwd)
    
    # 인코딩 설정
    conn.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8')
    conn.setdecoding(pyodbc.SQL_WCHAR, encoding='utf-8')
    conn.setdecoding(pyodbc.SQL_WMETADATA, encoding='utf-32le')
    conn.setencoding(encoding='utf-8')
    
    # DB 테스트
    curs = conn.cursor()
    row = curs.execute(sql)
    for i in row:
        print(i[0])
        
    # DB 연결 종료    
    conn.close()
except Exception as ex:
    print(ex)

 

7. 파이썬 코드 실행

python tibero_odbc.py

python tiberodbc.py
13.0
12.0
14.0

 

 

반응형

+ Recent posts