Hier ist ein Ansatz, der den von @johnthexii bereitgestellten Link verwendet (demo ). ) (es verwendet nur MySQL, ist also nicht Python-spezifisch)
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 ist eine Aufschlüsselung dessen, was vor sich geht:Der username
Das Feld ist als eindeutig gekennzeichnet, sodass jeder Versuch, einen Datensatz mit einem vorhandenen Benutzernamen einzufügen, auf Datenbankebene fehlschlägt. Dann das INSERT
-Anweisung hat ein Extra
ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1
Dies teilt MySQL mit, dass anstelle des Scheiterns von INSERT einfach die duplicates
genommen werden sollen Spalte und erhöhen Sie um eins. Wenn Sie die drei INSERT-Befehle ausführen, sehen Sie zwei Datensätze, stackoverflow.com
hat ein duplicates
Wert 1, während dba.stackexchange.com
hat ein duplicates
Wert 0.