Python:EXECUTEMANY 时提供的绑定数量不正确
Python: Incorrect number of bindings supplied when EXECUTEMANY
正在尝试挑选一些 python。我现在还很陌生。
我创建了下面的代码,但是 returns 出错了。
我可以在创建第二列并将多个值写入数据库时让它工作,但单个值似乎不起作用。大概是列表,元组的东西,但是想不通到底是什么。
错误:
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
& [= 的 2 项迭代器16=] - 因此错误。
您需要将字符串 'ab'
变成一个单项元组,例如 ('ab',)
。您可以通过在要追加的表达式中添加尾随逗号来执行此操作:
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()
正在尝试挑选一些 python。我现在还很陌生。
我创建了下面的代码,但是 returns 出错了。
我可以在创建第二列并将多个值写入数据库时让它工作,但单个值似乎不起作用。大概是列表,元组的东西,但是想不通到底是什么。
错误:
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
& [= 的 2 项迭代器16=] - 因此错误。
您需要将字符串 'ab'
变成一个单项元组,例如 ('ab',)
。您可以通过在要追加的表达式中添加尾随逗号来执行此操作:
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()