更改记录查询中的隔离级别或关闭事务

Change isolation level in records query or close transaction

我正在尝试使用 Kenneth Reitz's records library 构建一些自动测试脚本。我需要检查 MySQL 数据库的更新。

db_url_mysql = 'mysql://user:pass@mysql.localhost:3306/DB'
db = records.Database(db_url_mysql)
rows = db.query("SELECT * FROM Users").all()

但是,我遇到过有时简单查询 return 一个空数据集,忽略表中的更新。我完全可以在 GUI 客户端中看到更新,甚至可以在替代 python 控制台中使用记录。 我发现记录使用默认隔离级别 "REPEATABLE READ" 的 SQLAlchemy。可重复读取忽略所有更新,直到事务结束,所以我看不到它们。

有什么办法可以改变它吗?我可能需要关闭一个事务并打开一个新事务,或者更改此连接的隔离级别,但我该怎么做?

现在我可以回答我的问题了。

随着 records 0.5.0(2016 年 11 月)的发布,现在可以将参数传递给 SQLAlchemy 驱动程序。在我使用的0.4.3中没有这种可能性。

因此,要在连接上设置隔离级别,我们应该使用

db_url_mysql = 'mysql://user:pass@mysql.localhost:3306/DB'
db = records.Database(db_url_mysql,isolation_level="READ_UNCOMMITTED")