在Amazon RDS中查询的问题

时间:2011-05-23 15:33:45

标签: mysql amazon-web-services amazon-rds

您好我有一个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.我还缺少什么。

2 个答案:

答案 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"
                }