6
votes

Vérification duplicaté en insérant dans SQLite

J'essaie d'insérer une base de données dans la base de données SQLite à l'aide de Python.

INSERT INTO DATA_TABLE(UID,LABEL) VALUES (NULL, "UK")  
    WHERE "UK" NOT EXISTS IN (SELECT LABEL FROM DATA_TABLE);


0 commentaires

3 Réponses :


2
votes

Je suis sûr que insérer n'a pas de où la clause ( La documentation ne mentionne pas de ). Ce que vous pouvez faire:

  • créer un index unique sur étiquette
  • Utilisez Insérer ou échouer
  • Si cela déclenche une erreur, la ligne existe déjà.

1 commentaires

Oui, je ne l'ai pas au courant. Merci :)



2
votes

Il vous donne une erreur de syntaxe car il n'est pas Syntaxe autorisée . De votre exemple, je suppose que le schéma est probablement: xxx

dans quel cas clé primaire implique unique . Mais, étant donné que vous autorisez la génération automatique de uid , vous ne vous souciez pas de ce que la valeur est la valeur, vous ne voulez tout simplement pas dupliquer étiquette S auquel cas vous vous souciez réellement que étiquette est unique alors dites-le donc: xxx

qui fonctionne alors comme prévu: xxx < P> Incidemment, si les noms data_table , uid et étiquette ne sont pas d'exemple de noms aux fins de cette question, alors vous devez utiliser plus noms significatifs comme ceux-ci sont horriblement non informatifs.


1 commentaires

Merci @mesw, c'est vrai. Les noms sont juste des exemples, j'utilise l'étiquette comme unique.



1
votes
INSERT INTO DATA_TABLE(UID,LABEL) VALUES (NULL, "UK")  
WHERE NOT EXISTS(SELECT 1 FROM DATA_TABLE WHERE LABEL="UK");
you can use this instead of INSERT OR FAIL.

0 commentaires