현 시점에, Django가 티베로 odbc를 지원하지 않기때문에, 프로그래밍할때 ORM 사용은 불가능하다. 때문에, 아래와 같은 클래스를 만들어서 사용했다.
티베로 ODBC설정은 Ubuntu+Tibero+Python3+ODBC 연결하기를 참고하면 된다.
insert, delete 문은 execute 메소드를 사용하면되며, 결과값이 있는 쿼리는 query나 fetchone, fetchall 메소드를 사용하면된다. 윈도우 환경에서는 setdecoding 관련 부분이 필요 없지만, 리눅스 환경에서는 꼭 필요하다.
# Use to Tibero database from ODBC. # if has return query then use query, else execute... import pyodbc class Tibero: def __init__(self): dbuser = 'tibero_user' dbpass = 'tibero_password' dsn = 'ODBC_DSN' self.coninfo = 'DSN=%s;UID=%s;PWD=%s' % (dsn, dbuser, dbpass) self._conn = pyodbc.connect(self.coninfo) # setdecoding not need to windows, but need to linux self._conn.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8') self._conn.setdecoding(pyodbc.SQL_WCHAR, encoding='utf-8') self._conn.setdecoding(pyodbc.SQL_WMETADATA, encoding='utf-32le') self._conn.setencoding(encoding='utf-8') self._cursor = self._conn.cursor() def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): self.close() @property def connect(self): return self._conn @property def cursor(self): return self._cursor def commit(self): self.connect.commit() def close(self, commit=True): if commit: self.commit() self.connect.close() def execute(self, sql, params=None): self.cursor.execute(sql, params or ()) def fetchall(self): return self.cursor.fetchall() def fetchone(self): return self.cursor.fetchone() def query(self, sql, params=None): self.cursor.execute(sql, params or ()) return self.fetchall()