用Python和pypyodbc插入MSSQL数据 - Params必须在列表中,元组

时间:2017-07-27 13:49:05

标签: python sql-server python-3.x pypyodbc

我试图向MSSQL实例写入(我可以读得很好)值。我的代码类似于:

import pypyodbc
lst = ['val1', 'val2', 'val3']
connection = pypyodbc.connect(...)
cursor = connection.cursor()
cursor.executemany("INSERT INTO table (a, b, c)VALUES(?,?,?)", lst)

返回:参数必须在列表中,元组。我已经阅读了类似帖子,建议尝试lst = list([' val1,' val2',val3']) 但是这会返回:list()最多需要1个参数(给定3个) 我也尝试过cursor.execute()的变种,但是同样的问题。

1 个答案:

答案 0 :(得分:2)

请注意cursor.execute

之间的区别
  

.execute ( operation [, parameters ])

     

参数可以作为序列或映射提供,并将绑定到操作中的变量。

cursor.executemany

  

.executemany ( operation , seq_of_parameters )

     

准备数据库操作(查询或命令),然后对序列中找到的所有参数序列或映射执行 seq_of_parameters。

因此,如果您仅针对一个值设置执行查询,请按以下方式调用:

values = ['val1', 'val2', 'val3']
cursor.executemany("INSERT INTO table (a, b, c) VALUES (?,?,?)", [values])

或者,对于多组值:

values1 = ['val1', 'val2', 'val3']
values2 = ['val3', 'val2', 'val1']
cursor.executemany("INSERT INTO table (a, b, c) VALUES (?,?,?)", [values1, values2])