使用: Python 2.7.3 SQLAlchemy 0.7.8 PyODBC 3.0.3
我使用PyODBC作为底层数据库驱动程序为EXASolution DB实现了我自己的方言。我需要利用PyODBC的output_converter
函数将DECIMAL(x, 0)
列转换为整数/长整数。
以下代码段可以解决问题:
pyodbc = self.dbapi
dbapi_con = connection.connection
dbapi_version = dbapi_con.getinfo(pyodbc.SQL_DRIVER_VER)
(major, minor, patch) = [int(x) for x in dbapi_version]
if major >= 3:
dbapi_con.add_output_converter(pyodbc.SQL_DECIMAL, self.decimal2int)
我已将此代码段放在
的initialize(self, connection)
方法中
class EXADialect_pyodbc(PyODBCConnector, EXADialect):
调用代码,不抛出任何异常,但是这是一次初始化。稍后,将创建其他连接。这些连接不会通过我的初始化代码传递。
是否有人提示连接初始化如何与SQLAlchemy一起使用,以及在何处放置我的代码以便为每个创建的新连接调用它?