Hoe voeg ik in een tabel in via Python als een waarde niet al bestaat in SQLite


Beste antwoord

Hoe voeg ik in een tabel in via Python als een waarde niet bestaat bestaan ​​al in SQLite?

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

Aannemende:

  • je hebt een UNIQUE of PRIMARY KEY beperking op de name kolom, en
  • u niet wil dubbele name inserts om fouten te genereren,

dan zou de SQLite-query zijn:

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

(Lees de SQLite ON CONFLICT-clausule voor meer informatie over conflictoplossing en de vijf verschillende oplossingskeuzes beschikbaar— INSERT OR IGNORE is gewoon syntactisch suiker voor INSERT ON CONFLICT IGNORE.)

Als je geen beperkingen hebben voor de name kolom, dan is de veiligste manier om dit te doen twee afzonderlijke zoekopdrachten:

  • SELECT * FROM author WHERE name=?, en als dat terugkomt met 0 overeenkomende rijen,
  • INSERT INTO author (name) VALUES (?)

Antwoord

de SQL-instructie zelf is fout, en * in het algemeen moet worden vermeden

invoegen in auteur (naam)

selecteren? van auteur

waar niet bestaat (selecteer 42 van auteur waar naam =?)

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *