Najlepsza odpowiedź
Jak wstawić do tabeli za pomocą Pythona, jeśli wartość nie istnieje już istnieje w SQLite?
cursor.execute("INSERT INTO author (name) VALUES(?) SELECT * FROM author WHERE NOT EXISTS(SELECT * FROM author)", (aname, ))
Zakładając:
- masz lub
PRIMARY KEY
w kolumniename
, a - nie chcesz zduplikowane wstawki
name
, aby zgłaszać błędy,
wtedy zapytanie SQLite będzie wyglądać następująco:
INSERT OR IGNORE INTO author (name) VALUES (?)
(Przeczytaj stronę SQLite klauzula ON CONFLICT , aby dowiedzieć się więcej o rozwiązywaniu konfliktów i pięciu różnych opcjach dostępna – INSERT OR IGNORE
to po prostu cukier składniowy dla INSERT ON CONFLICT IGNORE
.)
Jeśli nie ma żadnych ograniczeń w kolumnie name
, wtedy najbezpieczniejszym sposobem na zrobienie tego jest dwa oddzielne zapytania:
-
SELECT * FROM author WHERE name=?
, a jeśli to wróci z 0 pasującymi wierszami, -
INSERT INTO author (name) VALUES (?)
Odpowiedź
samo wyrażenie SQL jest błędne i * ogólnie należy unikać
wstaw do autora (nazwisko)
wybrać? od autora
gdzie nie istnieje (wybierz 42 z autora, gdzie nazwisko =?)