Her er en tilgang ved hjælp af linket som @johnthexii gav (demo ) (det bruger kun MySQL, så det er ikke Python-specifikt)
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;
Her er en oversigt over, hvad der foregår:username
feltet er markeret som unikt, så ethvert forsøg på at indsætte en post med et eksisterende brugernavn vil mislykkes på databaseniveau. Derefter INSERT
erklæringen har en ekstra
ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1
Dette fortæller MySQL, at i stedet for at mislykkes med INSERT, skal du bare tage duplicates
kolonne og øges med én. Når du kører de tre INSERT-kommandoer, vil du se to poster, stackoverflow.com
har en duplicates
værdi på 1, mens dba.stackexchange.com
har en duplicates
værdi på 0.