我正在尝试使用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()
但是,我遇到有时简单查询返回空数据集,忽略表中的更新。我完全可以在GUI客户端中看到更新,甚至可以在备用python控制台中使用记录。 我发现记录使用SQLAlchemy和默认隔离级别“REPEATABLE READ”。可重复读取忽略所有更新,直到事务结束,因此我看不到它们。
有什么方法可以改变吗?我可能需要关闭一个事务并打开一个新事务,或者可能更改此连接的隔离级别,但我该怎么办呢?
答案 0 :(得分:1)
现在我可以回答我的问题了。
随着记录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")