Hier is een benadering met behulp van de link die @johnthexii heeft verstrekt (demo ) (het gebruikt alleen MySQL, dus het is niet specifiek voor 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;
Hier is een overzicht van wat er aan de hand is:De username
veld is gemarkeerd als uniek, dus elke poging om een record in te voegen met een bestaande gebruikersnaam zal mislukken op databaseniveau. Dan de INSERT
verklaring heeft een extra
ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1
Dit vertelt MySQL dat in plaats van de INSERT te laten mislukken, gewoon de duplicates
kolom en verhoog met één. Wanneer u de drie INSERT-opdrachten uitvoert, ziet u twee records, stackoverflow.com
heeft een duplicates
waarde van 1, terwijl dba.stackexchange.com
heeft een duplicates
waarde van 0.