【发布时间】:2015-04-23 11:05:32
【问题描述】:
在 SQL Server Management Studio 中,我可以运行以下查询:
select a.foo, colX, colY, colZ from tblA a
join tblB b
on (a.foo = b.foo)
在 python 脚本中通过 pyodbc 运行相同的查询,我得到:
pyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][ODBC SQL Server Driver][
SQL Server]"b" is not a recognized table hints option. If it is intended as a p
arameter to a table-valued function or to the CHANGETABLE function, ensure that
your database compatibility mode is set to 90. (321) (SQLExecDirectW)')
谁能解释为什么这个查询直接针对 SQL Server 工作,但使用 pyodbc 时表别名似乎有问题?
这是我能够找到的:
- 在 Microsoft Windows NT 6.1 (7601) 上运行的 SQL Server
- SQL Server 版本为 11.0.5532.0
- pyodbc 库:pyodbc-3.0.7.win32-py2.7
1) 我不知道如何生成可重现的示例,而且我不是 DBA;我几乎可以在 SQL 中获得成功。 2) 我不能在这个数据库上创建表。但是:我可以使用 RODBC r 包和针对同一个数据库的 sqlQuery() 调用使用 3 个连接/3 个别名进行完整查询。因此,罪魁祸首是 pyodbc,所以我会尝试找一个 python 开发人员来尝试重现并回发调查结果。
【问题讨论】:
-
发布的 T-SQL 没有任何语法错误。请使用用于产生错误的 python 代码编辑问题。
-
我无法重现您的问题。请edit您的问题以@BryanEargle 的建议显示您的代码,并提及所涉及的各种组件的版本(Python、pyodbc、SQL Server)。
标签: python sql-server pyodbc