【发布时间】:2018-04-19 15:39:33
【问题描述】:
我正在尝试从 MSSQL 服务器检索表(使用 DSN)
我有这个代码:
engine=sqlalchemy.create_engine('mssql+pyodbc://MATRIX')
md=sqlalchemy.MetaData()
tsk = sqlalchemy.Table('MATRIX_SMSIMA', md, autoload=True, autoload_with=engine, schema='USER')
最初,我在没有 schema 属性的情况下尝试了它,并收到一条 pyodbc 不支持默认模式的错误消息。
添加架构属性时,我收到一条似乎源于 Table 函数内部的错误消息:
in _compile(element, compiler, **kw)
39 def _compile(element, compiler, **kw):
40 from . import base
---> 41 if compiler.dialect.server_version_info < base.MS_2005_VERSION:
42 return compiler.process(element.bindvalue, **kw)
43 else:
TypeError: '<' not supported between instances of 'str' and 'int'
有没有办法解决这个问题?
【问题讨论】:
-
嗯,这看起来可能是 SQLAlchemy 中的一个错误。你可以试试猴子修补它说
if int(compiler.dialect.server_version_info) < int(base.MS_2005_VERSION):吗?我还没有测试过,但如果可行,我们可以发出一个带有 MSSQL 方言修复程序的拉取请求。我以前为 MSSQL 方言做出过贡献,如果它有效,我很乐意发布补丁。
标签: sql-server python-3.x sqlalchemy pyodbc