将arraylist作为参数传递以使用pyodbc将数据插入Ignite缓存时出错

将arraylist作为参数传递以使用pyodbc将数据插入Ignite缓存时出错,odbc,pyodbc,ignite,Odbc,Pyodbc,Ignite,我编写了以下代码,使用ODBC驱动程序将数据从python插入Ingite缓存。在本例中,我们希望将字符串的arraylist(id_list)作为参数传递。 我的列表包含可变数量的元素,这就是为什么我需要将其作为参数传递给查询的原因 cursor = connection.cursor() select_string= "INSERT INTO Person (_key, id, firstName, lastName, salary) VALUES (322, ? , 'abcd', 'd

我编写了以下代码,使用ODBC驱动程序将数据从python插入Ingite缓存。在本例中,我们希望将字符串的arraylist(id_list)作为参数传递。 我的列表包含可变数量的元素,这就是为什么我需要将其作为参数传递给查询的原因

cursor = connection.cursor()
select_string= "INSERT INTO Person (_key, id,  firstName, lastName, salary) VALUES (322, ? , 'abcd', 'dhsagd', 1000)"

id_list = ['test1', 'test2', 'test3', 'test4']
cursor.execute(select_string, id_list)
但当我将字符串列表作为参数传递给查询时,我得到了以下错误

Traceback (most recent call last):
  File "pythonOdbclist.py", line 13, in <module>
    cursor.execute(select_string, id_list)
pyodbc.ProgrammingError: ('The SQL contains 0 parameter markers, but 4 parameters were supplied', 'HY000')
回溯(最近一次呼叫最后一次):
文件“pythonOdbclist.py”,第13行,在
cursor.execute(选择字符串、id列表)
pyodbc.ProgrammingError:(“SQL包含0个参数标记,但提供了4个参数”,“HY000”)

根据文档,参数应作为单个值或元组传递:。在本例中,是否尝试执行
executemany
以插入四行


根据文档,参数应作为单个值或元组传递:。在本例中,是否尝试执行
executemany
以插入四行


您好,您提到的链接指定通过逐个获取列表中的元素来对给定列表执行SQL查询。在我的例子中,我想在id列中插入整个列表。经过上面提到的修改,我再次遇到以下错误,
Traceback(最近一次调用):cursor.executemany中第13行的文件“pythonOdbclist\u new.py”(选择字符串,id\u列表)pyodbc.ProgrammingError:(“SQL包含0个参数标记,但提供了1个参数”,“HY000”)
Hi@FlipperPA,我只想在一行中插入整个列表。谢谢。我认为pyodbc无法识别参数标记“?”,即使我指定了它。您好,您提到的链接指定通过逐个获取列表中的元素来对给定列表执行SQL查询。在我的例子中,我想在id列中插入整个列表。经过上面提到的修改,我再次遇到以下错误,
Traceback(最近一次调用):cursor.executemany中第13行的文件“pythonOdbclist\u new.py”(选择字符串,id\u列表)pyodbc.ProgrammingError:(“SQL包含0个参数标记,但提供了1个参数”,“HY000”)
Hi@FlipperPA,我只想在一行中插入整个列表。谢谢。我认为pyodbc无法识别参数标记“?”,即使我指定了它。
cursor = connection.cursor()
select_string= "INSERT INTO Person (_key, id,  firstName, lastName, salary) VALUES (322, ? , 'abcd', 'dhsagd', 1000)"

id_list = [('test1',), ('test2',), ('test3',), ('test4',)]
cursor.executemany(select_string, id_list)