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

Pythons MySqlDB erhält keine aktualisierte Zeile

Das ist eine InnoDB-Tabelle, richtig? InnoDB ist eine Transaktionsspeicher-Engine. Wenn Sie autocommit auf true setzen, wird dieses Verhalten wahrscheinlich für Sie behoben.

conn.autocommit(True)

Alternativ können Sie die Transaktionsisolationsstufe ändern. Sie können hier mehr darüber lesen:http://dev .mysql.com/doc/refman/5.0/en/set-transaction.html

Der Grund für dieses Verhalten ist, dass die Lesevorgänge innerhalb einer einzelnen Transaktion konsistent sein müssen. Alle konsistenten Lesevorgänge innerhalb derselben Transaktion lesen den Snapshot, der durch den ersten Lesevorgang erstellt wurde. Auch wenn Ihr Skript nur die Tabelle liest, wird dies ebenfalls als Transaktion betrachtet. Dies ist das Standardverhalten in InnoDB und Sie müssen es ändern oder conn.commit() nach jedem Lesevorgang ausführen.

Diese Seite erklärt dies ausführlicher:http:/ /dev.mysql.com/doc/refman/5.0/en/innodb-consistent-read.html