在SQLAlchemy中将输出转换器添加到pyodbc连接

时间:2012-07-26 14:11:10

标签: sqlalchemy pyodbc exasolution

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

0 个答案:

没有答案