【发布时间】:2018-04-18 20:51:41
【问题描述】:
我已经阅读了数十篇类似的帖子并尝试了所有方法,但在尝试使用 pyodbc 将参数传递给简单查询时仍然收到错误消息。抱歉,如果其他地方有此问题的答案,但我找不到它
我有一个非常简单的表格:
select * from Test
产量
a
b
c
这很好用:
import pyodbc
import pandas
connection = pyodbc.connect('DSN=HyperCube SYSTEST',autocommit=True)
result = pandas.read_sql("""select * from Test where value = 'a'""",connection,params=None)
print(result)
结果:
value
0 a
但是,如果我尝试使用带参数的 where 子句,它会失败
result = pandas.read_sql("""select * from Test where value = ?""",connection,params='a')
产量
Error: ('01S02', '[01S02] Unknown column/parameter value (9001) (SQLPrepare)')
我也试过了
cursor = connection.cursor()
cursor.execute("""select * from Test where value = ?""",['a'])
pyodbcResults = cursor.fetchall()
仍然收到同样的错误
有人知道发生了什么吗?会不会是我查询的数据库有问题?
PS。我查看了以下帖子,答案 9 的第一部分中的语法看起来与我正在做的相同
pyodbc sql 包含 0 个参数标记,但提供了 1 个参数''hy000'
谢谢
【问题讨论】:
-
您的 ODBC 驱动程序可能存在兼容性问题?
result = pd.read_sql(sql, cnxn, params=('a',))适用于我的 pyodbc 4.0.23 和 SQL Server 的 ODBC 驱动程序 11,使用?作为参数占位符 (... WHERE value = ?)。您可以使用其他数据库平台进行测试吗?
标签: sql parameters pyodbc