Heim >Backend-Entwicklung >Python-Tutorial >Warum gibt SQLite3 beim Einfügen von Daten den Fehler „Nicht übereinstimmende Bindungswertanzahl' aus?

Warum gibt SQLite3 beim Einfügen von Daten den Fehler „Nicht übereinstimmende Bindungswertanzahl' aus?

Linda Hamilton
Linda HamiltonOriginal
2024-11-29 01:15:13298Durchsuche

Why Does SQLite3 Throw a

SQLite3-Fehler: Nicht übereinstimmende Bindungswertanzahl

Beim Einfügen von Werten in eine SQLite3-Datenbank mithilfe der Methode „cursor.execute()“ ist es wichtig, Folgendes zu beachten: Stellen Sie sicher, dass die Anzahl der bereitgestellten Bindungswerte mit der in den Parametern der SQL-Anweisung angegebenen Anzahl übereinstimmt. Andernfalls kann ein Fehler wie „Falsche Anzahl der bereitgestellten Bindungen“ auftreten.

Beachten Sie den folgenden Codeausschnitt:

def insert(array):
    connection=sqlite3.connect('images.db')
    cursor=connection.cursor()
    cnt=0
    while cnt != len(array):
            img = array[cnt]
            print(array[cnt])
            cursor.execute('INSERT INTO images VALUES(?)', (img))
            cnt+= 1
    connection.commit()
    connection.close()

Beim Versuch, eine Zeichenfolge mit der Länge 74 einzufügen, wird dieser Code angezeigt löst den oben genannten Fehler aus. Der Grund dafür ist, dass die Methode „cursor.execute()“ eine Folge von Bindungswerten erwartet, während (img) nur ein Ausdruck ist.

Um dies zu beheben, müssen wir (img) in ein Tupel oder eine Liste konvertieren durch Hinzufügen eines Kommas. Hier ist der korrigierte Code:

def insert(array):
    connection=sqlite3.connect('images.db')
    cursor=connection.cursor()
    cnt=0
    while cnt != len(array):
            img = array[cnt]
            print(array[cnt])
            cursor.execute('INSERT INTO images VALUES(?)', (img,))  # Add a comma
            cnt+= 1
    connection.commit()
    connection.close()

Alternativ können wir ein Listenliteral verwenden:

cursor.execute('INSERT INTO images VALUES(?)', [img])

Das obige ist der detaillierte Inhalt vonWarum gibt SQLite3 beim Einfügen von Daten den Fehler „Nicht übereinstimmende Bindungswertanzahl' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn