[英]Python: Incorrect number of bindings supplied when EXECUTEMANY
试图拿起一些 python。 我现在对它很陌生。
我创建了下面的代码,但它返回错误。
在创建第二列并将多个值写入数据库时,我能够让它工作,但单个值似乎不起作用。 可能是一个列表,元组的东西,但无法弄清楚究竟是什么。
错误:
Traceback (most recent call last):
File "test.py", line 15, in <module>
cursor.executemany("INSERT INTO combination VALUES (?)", combination)
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 2 supplied.
代码:
import sqlite3
conn = sqlite3.connect("combinations.db")
cursor = conn.cursor()
cursor.execute(r"create table if not exists combination (string text)")
combination = []
chars = "abcd"
for char1 in chars:
for char2 in chars:
combination.append((char1+char2))
cursor.executemany("INSERT INTO combination VALUES (?)", combination)
conn.commit()
添加到列表时,您错过了将字符串转换为tuple
。 executemany
的参数需要一个可迭代的列表,因此如果您在列表中传递一个字符串'ab'
,它会将其视为a
和b
的 2 项迭代器 - 因此会出现错误。
您需要将字符串'ab'
变成像('ab',)
这样的 1 项元组。 您可以通过在要附加的表达式中添加尾随逗号来执行此操作:
combination.append((char1+char2,))
完整代码:
import sqlite3
conn = sqlite3.connect("combinations.db")
cursor = conn.cursor()
cursor.execute(r"create table if not exists combination (string text)")
combination = []
chars = "abcd"
for char1 in chars:
for char2 in chars:
combination.append((char1+char2,)) # ('ab',) etc.
cursor.executemany("INSERT INTO combination VALUES (?)", combination)
conn.commit()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.