Comment insérer dans une table via Python si une valeur nexiste pas déjà dans SQLite


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 ou PRIMARY KEY contrainte sur la colonne name, 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 =?)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *