Hur man infogar i en tabell via Python om ett värde inte redan finns i SQLite


Bästa svaret

Hur infogar jag i en tabell genom Python om ett värde inte finns det redan i SQLite?

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

Om du antar:

  • har du en UNIQUE eller PRIMARY KEY begränsning i name kolumnen, och
  • du inte vill ha dubbletter name infogar för att kasta fel,

då skulle SQLite-frågan vara:

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

(Läs SQLite ON CONFLICT clause sidan för att förstå mer om konfliktlösning och de fem olika upplösningsalternativen tillgängligt – INSERT OR IGNORE är bara syntaktiskt socker för INSERT ON CONFLICT IGNORE.)

Om du har inte några begränsningar för kolumnen name, så det säkraste sättet att göra detta är som två separata frågor:

  • SELECT * FROM author WHERE name=?, om det kommer tillbaka med 0 matchande rader,
  • INSERT INTO author (name) VALUES (?)

Svar

själva SQL-satsen är fel och * i allmänhet bör undvikas

infoga i författare (namn)

välj? från författare

där det inte finns (välj 42 från författare där namn =?)

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *