Berikut adalah pendekatan menggunakan tautan yang disediakan @johnthexii (demo ) (hanya menggunakan MySQL, jadi tidak spesifik untuk 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;
Berikut adalah rincian dari apa yang terjadi:username
bidang ditandai sebagai unik sehingga setiap upaya untuk memasukkan catatan dengan nama pengguna yang ada akan gagal di tingkat basis data. Kemudian INSERT
pernyataan memiliki tambahan
ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1
Ini memberi tahu MySQL bahwa alih-alih gagal INSERT, ambil saja duplicates
kolom dan bertambah satu. Saat Anda menjalankan tiga perintah INSERT, Anda akan melihat dua catatan, stackoverflow.com
memiliki duplicates
nilai 1, sedangkan dba.stackexchange.com
memiliki duplicates
nilai 0.