您好我有一个python脚本连接到Amazon RDS计算机并检查新条目。 我的脚本完全适用于localhost。但是在RDS上它没有检测到新条目。一旦我取消脚本并再次运行,我得到新的条目。为了测试,我尝试了这样的
cont = MySQLdb.connect("localhost","root","password","DB")
cursor = cont.cursor()
for i in range(0, 100):
cursor.execute("Select count(*) from box")
A = cursor.fetchone()
print A
并且在此过程中,当我添加新条目时,它不会检测到新条目,但是当我关闭连接并再次运行它时,我会获得新条目。为什么我检查了它的缓存为0.我还缺少什么。
答案 0 :(得分:0)
我已经在MySQL命令行客户端中看到过这种情况。
我的理解(来自链接到此URL的其他人)是Python的API经常以静默方式创建事务:http://www.python.org/dev/peps/pep-0249/
如果这是真的,那么即使在另一个事务添加行之后,您的光标也会查看数据的一致版本。您可以尝试在cursor.rollback()
循环中执行for
以停止SELECT
正在运行的隐式事务。
答案 1 :(得分:0)
我得到了解决方案,这是由于Mysql中的隔离级别,所有我必须做的是
Set the default transaction isolation level transaction-isolation = READ-COMMITTED
我正在使用Django,我必须在django数据库设置中添加它
'OPTIONS': {
"init_command": "SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED"
}