使用: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 一起工作,以及在哪里放置我的代码以便为每个创建的新连接调用它?