2011-05-23 54 views
0

嗨,我有一个连接到Amazon RDS机器并检查新条目的python脚本。 我的脚本完美地运行在本地主机上。但是在RDS上它没有检测到新条目。一旦我取消脚本并再次运行,我会得到新的条目。为了测试我尝试过了类似这样的在Amazon 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

我得到了解决这一点,是因为在MySQL中隔离级别,我所要做的就是

Set the default transaction isolation level transaction-isolation = READ-COMMITTED 

,我使用Django为了这个,我不得不在Django的数据库设置添加此

'OPTIONS': { 
       "init_command": "SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED" 
       } 
0

我在MySQL命令行客户端也看到过这种情况。

我的理解(从其他人链接到这个URL)是Python的API通常安静无声地创造交易:http://www.python.org/dev/peps/pep-0249/

如果这是真的,那么你的光标在看数据的一致版本,甚至接连事务添加行。你可以尝试在for循环做cursor.rollback()停止该SELECT在运行的隐式事务。

+0

曾尝试这没有奏效 – Rakesh 2011-06-06 18:23:57