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
ofPRIMARY KEY
beperking op dename
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 =?)