提供的绑定数不正确

2024-06-01 00:36:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个清单:

result1 = ['"United States"', '"China"', '"Sweden"', '"Europe"', '"Russian Federation"', '"China"']

我想把它插入一个表中:

^{pr2}$

但我得到一个错误:

Incorrect number of bindings supplied. The current statement uses 1, and there are 74 supplied.

任何帮助都将不胜感激。或者如果你需要更多的代码,请告诉我。在


Tags: ofnumber错误bindingsunitedstateseuropechina
1条回答
网友
1楼 · 发布于 2024-06-01 00:36:45

编写的代码试图插入一行,在该行中指定74个值,而不是查询所需的1。在

此外,参数化查询的优点在于,您不需要(也不应该)引用字符串或执行任何其他操作来避免SQL注入攻击。因此,您的国家/地区列表中的字符串可能不应该被引用(除非您出于某种原因希望它们在数据库中实际包含引号)。在

您可能正在寻找con.executemany,它接受一个列表列表。因此,您需要类似于:

result1 = [['United States'], ['China'], ['Sweden'], ...]
con.executemany("INSERT INTO TableName(contry) VALUES(?)", result1)

请注意,这(可能)运行74个独立的INSERT语句,而不是1个多行INSERT语句,这取决于您使用的数据库。某些高级SQL框架(如SQLAlchemy)提供了更好地处理这一问题的工具,而您特定风格的数据库API也可能提供类似的工具。在

如果没有这两种方法,那么执行多行插入的另一种方法是这样的:(编写得比实际需要的要详细得多)

^{pr2}$

相关问题 更多 >