# 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()