SQLite3执行提供的许多不正确的绑定数,声称我提供了28个绑定,而不管提供了多少值

gcuhipw9  于 2023-01-17  发布在  SQLite
关注(0)|答案(1)|浏览(131)

我已经做了几个小时了,我有一个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.
w51jfk4q

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:(-不建议在条目前使用空格,也不建议在列名中使用空格和冒号)

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")
        conn = sqlite3.connect("test2.db")
        cursor = conn.cursor()
        print(sqlite3.version)
        cursor.execute("""CREATE TABLE IF NOT EXISTS test (Celkova_cena, Poznamka_k_cene, ID_zakazky, Aktualizace, Stavba)""")
    except Exception as e:  # not 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 (Celkova_cena, Poznamka_k_cene, ID_zakazky, Aktualizace, Stavba) VALUES (?, ?, ?, ?, ?)""", values) #Insert tuple of values
    conn.commit()
    conn.close()

write(values)

DB-Browser中的输出:

相关问题