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
UNIQUEoderPRIMARY KEYEinschränkung für die Spaltenameund - nicht Wenn doppelte
nameEinfü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 =?)