Hvordan sette inn i en tabell gjennom Python hvis en verdi ikke allerede finnes i SQLite


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 eller PRIMARY KEY begrensning for name -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 =?)

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *