Meilleure réponse
Comment insérer dans une table via Python si une valeur nexiste pas existe déjà dans SQLite?
cursor.execute("INSERT INTO author (name) VALUES(?) SELECT * FROM author WHERE NOT EXISTS(SELECT * FROM author)", (aname, ))
En supposant:
- vous avez un
UNIQUE
ouPRIMARY KEY
contrainte sur la colonnename
, et - vous ne le faites pas voulez dupliquer les
name
inserts pour générer des erreurs,
alors la requête SQLite serait:
INSERT OR IGNORE INTO author (name) VALUES (?)
(Lisez la page SQLite ON CONFLICT pour en savoir plus sur la résolution des conflits et les cinq choix de résolution différents disponible— INSERT OR IGNORE
nest que du sucre syntaxique pour INSERT ON CONFLICT IGNORE
.)
Si vous nont aucune contrainte sur la colonne name
, alors le moyen le plus sûr de le faire est de deux requêtes distinctes:
-
SELECT * FROM author WHERE name=?
, alors si cela revient avec 0 ligne correspondante, -
INSERT INTO author (name) VALUES (?)
Réponse
linstruction SQL elle-même est fausse, et * en général doit être évitée
insérer dans lauteur (nom)
sélectionner? de lauteur
où nexiste pas (sélectionnez 42 de lauteur où nom =?)