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.