Voici une approche utilisant le lien fourni par @johnthexii (démo ) (il utilise uniquement MySQL, il n'est donc pas spécifique à Python)
CREATE TABLE UserNames (`username` varchar(35) unique, `duplicates` int);
INSERT INTO UserNames (`username`, `duplicates`)
VALUES ('stackoverflow.com', 0);
INSERT INTO UserNames (`username`, `duplicates`)
VALUES ('dba.stackexchange.com/', 0)
ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1;
INSERT INTO UserNames (`username`, `duplicates`)
VALUES ('stackoverflow.com', 0)
ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1;
Voici une ventilation de ce qui se passe :Le username
est marqué comme unique, toute tentative d'insertion d'un enregistrement avec un nom d'utilisateur existant échouera au niveau de la base de données. Puis le INSERT
déclaration a un supplément
ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1
Cela indique à MySQL qu'au lieu d'échouer l'INSERT, il suffit de prendre les duplicates
colonne et incrémenter de un. Lorsque vous exécutez les trois commandes INSERT, vous verrez deux enregistrements, stackoverflow.com
a un duplicates
valeur de 1, tandis que dba.stackexchange.com
a un duplicates
valeur de 0.