Als ich versuchte, mit sqlite3 in Python Daten zur Datenbank hinzuzufügen, wurde "Betriebsfehler: Keine solche Spalte: Keine" angezeigt. Aus der Schlussfolgerung geht hervor, dass die Grammatik unangemessen war.
python 3.7 sqlite 3.30.0
Erstellen Sie eine einfache Datenbank, um den Fehler zu reproduzieren. Angenommen, die Beispieltabelle hat einen Spaltenwert vom Typ Ganzzahl. Speichern Sie den Wert der in Python erstellten Variablen x als Wert.
import sqlite3
db_path="test.sqlite3"
con=sqlite3.connect(db_path)
c=con.cursor()
x=1
sql="insert into examples(value) values({0})".format(x)
c.execute(sql)
con.commit()
con.close()
Bei x = 1 tritt kein Fehler auf. Aber wenn x = Keine
#~~~Abkürzung~~~~
x=None
sql="insert into examples(value) values({0})".format(x)
c.execute(sql)
#~~~Abkürzung~~~~
OperationalError: no such column: None
Das Problem ist, dass ich .format () verwendet habe, sodass "None" zu einem String wurde. Ich bemerkte, dass es ein dummer Fehler war, aber ich habe viel Zeit gegessen ... Um richtig zu sein, schreibe wie folgt. Dies wurde auch in Official empfohlen.
#~~~Abkürzung~~~~
x=None
sql="insert into examples(value) values(?)"
c.execute(sql, [x])
#~~~Abkürzung~~~~
Seien Sie vorsichtig, wenn Sie Python-Variablen in SQL-Abfragen einbetten.
Recommended Posts