Här är ett tillvägagångssätt med hjälp av länken som @johnthexii gav (demo ) (den använder bara MySQL, så den är inte Python-specifik)
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;
Här är en sammanfattning av vad som händer:username
fältet är markerat som unikt så varje försök att infoga en post med ett befintligt användarnamn kommer att misslyckas på databasnivå. Sedan INSERT
uttalandet har en extra
ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1
Detta talar om för MySQL att istället för att misslyckas med INSERT att bara ta duplicates
kolumn och öka med en. När du kör de tre INSERT-kommandona kommer du att se två poster, stackoverflow.com
har en duplicates
värdet 1, medan dba.stackexchange.com
har en duplicates
värde 0.