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!