Aqui está uma abordagem usando o link que @johnthexii forneceu (demo ) (está usando apenas o MySQL, portanto não é específico do 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;
Aqui está um detalhamento do que está acontecendo:O
username
O campo é marcado como exclusivo, portanto, qualquer tentativa de inserir um registro com um nome de usuário existente falhará no nível do banco de dados. Em seguida, o INSERT
declaração tem um extra ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1
Isso diz ao MySQL que, em vez de falhar no INSERT, apenas pegue as
duplicates
coluna e incrementar em um. Ao executar os três comandos INSERT, você verá dois registros, stackoverflow.com
tem um duplicates
valor de 1, enquanto dba.stackexchange.com
tem um duplicates
valor de 0.