Aquí hay un enfoque usando el enlace que proporcionó @johnthexii (demo ) (está usando solo MySQL, por lo que no es específico de 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;
Aquí hay un desglose de lo que está pasando:El username
El campo está marcado como único, por lo que cualquier intento de insertar un registro con un nombre de usuario existente fallará en el nivel de la base de datos. Luego el INSERT
declaración tiene un extra
ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1
Esto le dice a MySQL que, en lugar de fallar el INSERTAR, simplemente tome los duplicates
columna e incrementar en uno. Cuando ejecute los tres comandos INSERT, verá dos registros, stackoverflow.com
tiene un duplicates
valor de 1, mientras que dba.stackexchange.com
tiene un duplicates
valor de 0.