Ecco un approccio utilizzando il link fornito da @johnthexii (demo ) (usa solo MySQL, quindi non è specifico per 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;
Ecco una ripartizione di quello che sta succedendo:Il username
il campo è contrassegnato come univoco, quindi qualsiasi tentativo di inserire un record con un nome utente esistente fallirà a livello di database. Quindi il INSERT
l'istruzione ha un extra
ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1
Questo dice a MySQL che invece di fallire l'INSERT di prendere solo i duplicates
colonna e incrementa di uno. Quando esegui i tre comandi INSERT vedrai due record, stackoverflow.com
ha un duplicates
valore di 1, mentre dba.stackexchange.com
ha un duplicates
valore di 0.