我已经做了几个小时了,我有一个27个值的列表,我想写在一行中,但是不管值列表有多长,它仍然抱怨提供了28个值,我试过其他长度的列表,将列表作为元组提供,将单个值写进元组中......只是我能想到的一切,它仍然抱怨提供了28个值。
最奇怪的是,当我制作了一个有28列的表(对应于假定的28个值),并提供了它所说的28个值长的相同列表时,它突然抱怨提供了57个值。下面是我的代码,其中包含了一个5个变量长的列表。
import sqlite3
values = [' 19 850 000 Kč za nemovitost', ' včetně poplatků, včetně provize, včetně právního servisu', ' N6251', ' 29.09.2022', ' Cihlová']
def write(values):
try:
conn = sqlite3.connect(fr"C:\Users\halik\OneDrive\Dokumenty\GitHub\sws\code\test2.db")
cursor = conn.cursor()
print(sqlite3.version)
cursor.execute('''CREATE TABLE IF NOT EXISTS test ("Celková cena:", "Poznámka k ceně:", "ID zakázky:", "Aktualizace:", "Stavba:")''')
except Error as e:
print(e)
quit()
print(f"values is {values}")
print(f"len(values) is {len(values)}")
print(f"len((values,)) is {len((values,))}")
cursor.executemany("INSERT INTO test VALUES (?, ?, ?, ?, ?)", values)
conn.commit()
conn.close()
write(values)
与这个确切的代码以上我得到这个输出和错误
cursor.executemany("INSERT INTO test VALUES (?, ?, ?, ?, ?)", values)
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 5, and there are 28 supplied.
1条答案
按热度按时间w51jfk4q1#
您的代码中有几个问题。首先是except Error,其次是INSERT命令中的值应该是元组(values,),或者您可以将元组的输入列表更改为
values = [('19 850 000 Kč za nemovitost', 'včetně poplatků, včetně provize, včetně právního servisu', 'N6251', '29.09.2022', 'Cihlová')]
。在这种情况下,您只能在insert命令中使用values
:(-不建议在条目前使用空格,也不建议在列名中使用空格和冒号)DB-Browser中的输出: