Ето един подход, използващ връзката, предоставена от @johnthexii (демо ) (използва само MySQL, така че не е специфичен за 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;
Ето разбивка на случващото се:username
полето е маркирано като уникално, така че всеки опит за вмъкване на запис със съществуващо потребителско име ще се провали на ниво база данни. След това INSERT
изразът има допълнително
ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1
Това казва на MySQL, че вместо да провали INSERT просто да вземе duplicates
колона и увеличение с единица. Когато изпълните трите команди INSERT, ще видите два записа, stackoverflow.com
има duplicates
стойност 1, докато dba.stackexchange.com
има duplicates
стойност 0.