Beste svaret
Hvordan setter jeg inn i en tabell gjennom Python hvis en verdi ikke eksisterer det allerede i SQLite?
cursor.execute("INSERT INTO author (name) VALUES(?) SELECT * FROM author WHERE NOT EXISTS(SELECT * FROM author)", (aname, ))
Forutsatt:
- har du en
UNIQUE
ellerPRIMARY KEY
begrensning forname
-kolonnen, og - du ikke ønsker duplikat
name
setter inn for å kaste feil,
så vil SQLite-spørringen være:
INSERT OR IGNORE INTO author (name) VALUES (?)
(Les SQLite PÅ KONFLIKT-ledd -siden for å forstå mer om konfliktløsning og de fem forskjellige løsningsvalgene tilgjengelig – INSERT OR IGNORE
er bare syntaktisk sukker for INSERT ON CONFLICT IGNORE
.)
Hvis du ikke har noen begrensninger for name
-kolonnen, så er den sikreste måten å gjøre dette som to separate spørsmål:
-
SELECT * FROM author WHERE name=?
, så hvis det kommer tilbake med 0 matchende rader, -
INSERT INTO author (name) VALUES (?)
Svar
Selve SQL-setningen er feil, og * generelt bør unngås
sett inn i forfatter (navn)
velg? fra forfatter
der det ikke finnes (velg 42 fra forfatter der navn =?)