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()

您在添加到列表时错过了将字符串变成 tupleexecutemany 的参数需要一个可迭代列表,因此如果您将列表中的单个字符串 '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()