我正在尝试使用Kenneth Reitz's records library构建一些自动测试脚本。我需要在这里和那里检查MySQL数据库以获取更新。
db_url_mysql = 'mysql://user:[email protected]:3306/DB'
db = records.Database(db_url_mysql)
rows = db.query("SELECT * FROM Users").all()
但是,我遇到有时简单的查询会返回一个空的数据集,而忽略表中的更新。我完全可以在GUI客户端中看到更新,甚至可以在其他python控制台中使用记录。我发现记录使用带有默认隔离级别“ REPEATABLE READ”的SQLAlchemy。可重复读忽略所有更新,直到事务结束,所以我看不到它们。
有什么办法可以改变呢?我可能需要关闭一个事务并打开一个新事务,或者更改此连接的隔离级别,但是我该怎么做?
现在我可以回答我的问题。
随着发布记录0.5.0(2016年11月),现在可以将参数传递给SQLAlchemy驱动程序。我使用的0.4.3中没有这种可能性。
因此,要在连接上设置隔离级别,请使用
db_url_mysql = 'mysql://user:[email protected]:3306/DB'
db = records.Database(db_url_mysql,isolation_level="READ_UNCOMMITTED")