Impala ODBC 驱动程序的 pyodbc 参数化插入
pyodbc parameterized insert for Impala ODBC Driver
我正在尝试使用 pyodbc 和 Cloudera ODBC 驱动程序为 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,
OS - Windows 10
如 GitHub here 所解决,这是 ODBC 驱动程序的问题,而不是 pyodbc 的问题。
我正在尝试使用 pyodbc 和 Cloudera ODBC 驱动程序为 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, OS - Windows 10
如 GitHub here 所解决,这是 ODBC 驱动程序的问题,而不是 pyodbc 的问题。