2011-05-23 66 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