SQLite3 Python 'Incorrect number of bindings supplied. The current statement uses 1, ... supplied' beheben
English
Deutsch
Problem:
Du versuchst, eine einfache SQL-Abfrage mit Platzhaltern auf einer SQLite3-Datenbank auszuführen, z.B.:
sqlite_incorrect_bindings_fix.py
name = "mytable"
conn.execute("SELECT sql FROM sqlite_master WHERE name=?;", name)Aber du erhältst eine Exception wie diese:
sqlite3_bindings_error.txt
---------------------------------------------------------------------------
ProgrammingError Traceback (most recent call last)
<ipython-input-55-e385cf40fd72> in <module>
1 name = "mytable"
----> 2 conn.execute("SELECT sql FROM sqlite_master WHERE type='table' AND name=?;", name)
ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 7 supplied.Lösung
Du musst eine Liste als zweites Argument an conn.execute(...) übergeben!
Da du der Funktion nur einen String übergeben hast, wird der String als Liste von Zeichen interpretiert.
In unserem Beispiel oben musst du einfach name in eckige Klammern setzen, um [name] zu lesen:
sqlite3_bindings_fix.py
name = "mytable"
conn.execute("SELECT sql FROM sqlite_master WHERE name=?;", [name])If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow