用于 Impala ODBC 驱动程序的 pyodbc 参数化插入
Posted
技术标签:
【中文标题】用于 Impala ODBC 驱动程序的 pyodbc 参数化插入【英文标题】:pyodbc parameterized insert for Impala ODBC Driver 【发布时间】:2021-02-12 05:52:30 【问题描述】:我正在尝试使用 pyodbc 和 Cloudera ODBC Driver for Impala 进行参数化插入查询,但它不起作用。 我正在尝试执行以下查询。
import pyodbc
insert_query = "insert into table_name(id,name,price) values(?,?,?)"
cursor.execute(insert_query,1,"Apples","20 dollars")
这是我收到的错误:
The SQL contains 0 parameter markers but 3 parameters were supplied, 'HY000'
如果我使用这样的 Python 格式执行查询,它可以工作:
query_format = "insert into table_name(id,name,price) values(,\"\",\"\")".format(1,"Apples","20 dollars")
cursor.execute(query_format)
但我真的想单独指定参数,因为我想做 cursor.executemany() 稍后进行批量插入,并且使用格式化方法迫使我使用 for 循环。
我没有单独发送值,而是使用了元组,也使用了列表。没有任何效果。为什么不识别“?”作为参数标记?
Python - 3.7.4, Pyodbc - 4.0.27, 蟒蛇 - 1.7.2, 操作系统 - Windows 10
【问题讨论】:
【参考方案1】:已在 GitHub here 上解决,这是 ODBC 驱动程序的问题,而不是 pyodbc 的问题。
【讨论】:
是的。谢谢你:)以上是关于用于 Impala ODBC 驱动程序的 pyodbc 参数化插入的主要内容,如果未能解决你的问题,请参考以下文章
为 RODBC 安装 Cloudera Impala ODBC 驱动程序