首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQLAlchemy中向pyodbc连接中添加输出转换器

在SQLAlchemy中向pyodbc连接中添加输出转换器
EN

Stack Overflow用户
提问于 2012-07-26 14:11:10
回答 1查看 1.1K关注 0票数 4

使用:Python2.7.3 SQLAlchemy 0.7.8 PyODBC 3.0.3

我为EXASolution DB实现了自己的方言,使用PyODBC作为底层db驱动程序。我需要使用PyODBC的output_converter函数将DECIMAL(x, 0)列转换为整数/长。

下面的代码片段完成了这个任务:

代码语言:javascript
复制
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)方法中放置了这个代码段

代码语言:javascript
复制
    class EXADialect_pyodbc(PyODBCConnector, EXADialect):

调用代码,不会抛出任何异常,但这是一次性初始化。稍后,将创建其他连接。这些连接不会通过我的初始化代码传递。

有没有人对SQLAlchemy的连接初始化有什么提示,以及在哪里放置我的代码,以便为创建的每个新连接调用它?

EN

回答 1

Stack Overflow用户

发布于 2021-12-28 19:36:01

这是个老掉牙的问题,但我最近碰到了一些问题,所以一个最新的答案可能会帮助其他人。在我的例子中,我试图自动减少mssql UNIQUEIDENTIFIER列(guids)。

您可以通过会话或引擎获取原始连接(pyodbc)以完成以下操作:

代码语言:javascript
复制
engine = create_engine(connection_string)
make_session = sessionmaker(engine)
...
session = make_session()

session.connection().connection.add_output_converter(SQL_DECIMAL, decimal2int)

# or

connection = engine.connect().connection
connection.add_output_converter(SQL_DECIMAL, decimal2int)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11671170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档