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

Wege, um zu vermeiden, dass die Befehle von MySQLdb nicht synchron sind; Sie können diesen Befehl jetzt nicht ausführen (2014) Ausnahme

DB-API versucht, Transaktionen selbst zu handhaben, startet eine Transaktion beim ersten Befehl und hat einen eigenen API-Aufruf, um sie festzuschreiben, also:

cursor.execute( "CREATE TABLE t1 ( t1_id INT PRIMARY KEY AUTO_INCREMENT )" )
cursor.commit()
cursor.execute( "CREATE TABLE t2 ( t2_id INT PRIMARY KEY AUTO_INCREMENT )" )
cursor.commit()

Meiner Meinung nach ist dies ein schwerwiegender, eklatanter Designfehler von Pythons DB-API, der es zu einem ernsthaften Problem macht, Befehle außerhalb von Transaktionen auszuführen und die richtige Kontrolle über Transaktionen zu haben, z. Dinge wie BEGIN EXCLUSIVE TRANSACTION von SQLite zu verwenden . Es ist, als ob jemand ohne wirkliche Datenbankerfahrung die API entwerfen dürfte...