Falsche Anzahl von Bindungen
Beim Versuch, eine Zeichenfolge mit dem folgenden Code in eine SQLite-Datenbank einzufügen, tritt ein Fehler auf, der auf eine falsche Zahl hinweist von Bindungen:
def insert(array): connection=sqlite3.connect('images.db') cursor=connection.cursor() cnt=0 while cnt != len(array): img = array[cnt] cursor.execute('INSERT INTO images VALUES(?)', (img)) cnt+= 1 connection.commit() connection.close()
Die Fehlermeldung erscheint, wenn die einzufügende Zeichenfolge 74 Zeichen lang ist lang.
Die Wurzel des Problems
Der Code versucht, eine Folge von Elementen als Bindungswerte an die Methodeexecute() zu übergeben. Der Bindungswertparameter erfordert jedoch ein Tupel, und der Code versäumt es, das zum Erstellen eines Tupels erforderliche Komma bereitzustellen.
cursor.execute('INSERT INTO images VALUES(?)', (img)) # Missing comma
Der Fix
Um das zu beheben Problem, fügen Sie am Ende des Bindungswertparameters ein Komma hinzu, um ein Tupel zu erstellen:
cursor.execute('INSERT INTO images VALUES(?)', (img,))
Alternativ können Sie eine Liste verwenden Literal, das auch als gültige Sequenz erkannt wird:
cursor.execute('INSERT INTO images VALUES(?)', [img])
Bei beiden Korrekturen fügt der Code den Bildpfad korrekt in die Datenbank ein, ohne die Fehlermeldung über eine falsche Anzahl von Bindungen auszulösen.
Das obige ist der detaillierte Inhalt vonWarum schlägt meine SQLite-INSERT-Anweisung mit „Falscher Anzahl von Bindungen' für lange Zeichenfolgen fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!