Jak wstawić do tabeli za pomocą Pythona, jeśli wartość nie istnieje jeszcze w SQLite


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 kolumnie name, 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 =?)

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *