Pyodbc未检测到配置单元表的SQL语句中的参数标记(即-Insert into table SELECT..).有解



我的目标是迭代一组值,并使用它们运行一组查询,这些查询将使用pyodbc将结果插入配置单元表中。

我试过

params = ['USA','JP']
set(params)
for i in params:
cursor.execute(insert into table **some_db.some_tbl** SELECT name, country from **some_db.some_tbl_2** where country = ?,i)

并得到错误

,并收到错误消息ProgrammingError:("SQL包含0个参数标记,但提供了1个参数","HY000"(。

如果我删除插入到表some_db.some_tbl部分,它可以正常工作。不确定还能做什么,因为所有的文档和类似的问题都表明我所做的是正确的。

如果我保留插入到表some_db.some_tbl部分,但删除参数化,它可以正常工作。

我用一个简单的解决方法来回答这个问题,因为它可能有助于为其他人节省一些时间。

由于"插入而不参数化">的"选择并参数化">是独立工作的,因此我通过使用select语句循环参数,然后将结果保存到pandas数据帧来解决这个问题。从那里,您可以对pandas数据帧运行插入,而无需对当前迭代进行参数化。所有这些都将在循环的主体中,从而分别考虑所有参数值。

最新更新