Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQLdb-Python fügt Zeile ein oder erhöht die Anzahl der Spalten, falls vorhanden

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.