繁体   English   中英

Python:执行时提供的绑定数量不正确

[英]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' ,它会将其视为ab的 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM