Sådan indsættes i en tabel gennem Python, hvis der ikke allerede findes en værdi i SQLite


Bedste svar

Hvordan indsætter jeg i en tabel gennem Python, hvis en værdi ikke findes der allerede i SQLite?

cursor.execute("INSERT INTO author (name) VALUES(?) SELECT * FROM author WHERE NOT EXISTS(SELECT * FROM author)", (aname, ))

Under forudsætning af:

  • har du en UNIQUE eller PRIMARY KEY begrænsning i name kolonnen, og
  • du ikke vil have duplikat name indsatser for at kaste fejl,

så vil SQLite-forespørgslen være:

INSERT OR IGNORE INTO author (name) VALUES (?)

(Læs SQLite PÅ KONFLIKT-klausul for at forstå mere om konfliktløsning og de fem forskellige løsningsvalg tilgængelig – INSERT OR IGNORE er bare syntaktisk sukker til INSERT ON CONFLICT IGNORE.)

Hvis du har ikke nogen begrænsninger for name kolonnen, så den sikreste måde at gøre dette på er som to separate forespørgsler:

  • SELECT * FROM author WHERE name=?, så hvis det kommer tilbage med 0 matchende rækker,
  • INSERT INTO author (name) VALUES (?)

Svar

Selve SQL-sætningen er forkert, og * generelt bør undgås

indsæt i forfatter (navn)

vælg? fra forfatter

hvor der ikke findes (vælg 42 fra forfatter hvor navn =?)

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *