用于 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 驱动程序

impala使用指南

用odbc和php pdo连接impala,字符串字段为空

R odbc Impala 从 Select 中的默认数据库更改

Impala技术原理

带你认识Impala