Beste Antwort
Wie füge ich über Python in eine Tabelle ein, wenn ein Wert nicht vorhanden ist bereits in SQLite vorhanden?
cursor.execute("INSERT INTO author (name) VALUES(?) SELECT * FROM author WHERE NOT EXISTS(SELECT * FROM author)", (aname, ))
Angenommen:
- Sie haben eine
UNIQUE
oderPRIMARY KEY
Einschränkung für die Spaltename
und - nicht Wenn doppelte
name
Einfügungen Fehler auslösen sollen,
lautet die SQLite-Abfrage:
INSERT OR IGNORE INTO author (name) VALUES (?)
(Lesen Sie die Seite SQLite ON CONFLICT , um mehr über die Konfliktlösung und die fünf verschiedenen Lösungsoptionen zu erfahren verfügbar – INSERT OR IGNORE
ist nur syntaktischer Zucker für INSERT ON CONFLICT IGNORE
.)
Wenn Sie hat keine Einschränkungen für die Spalte name
. Der sicherste Weg, dies zu tun, ist zwei separate Abfragen:
-
SELECT * FROM author WHERE name=?
Wenn dies mit 0 übereinstimmenden Zeilen zurückkommt, -
INSERT INTO author (name) VALUES (?)
Antwort
Die SQL-Anweisung selbst ist falsch und * sollte im Allgemeinen vermieden werden
in Autor (Name) einfügen
auswählen? vom Autor
wo nicht vorhanden (wählen Sie 42 vom Autor mit dem Namen =?)