2016-11-23 127 views
1

我得到了這樣的MySQL查詢蟒蛇一小段代碼,Python循環查詢MySQL - 查詢結果未更新?

while True: 
    print "running SQL query" 
    cursor.execute('select * from sites where stage="NEW"') 
    results = cursor.fetchall() #Fetch results 
    for row in results: 
     print "change detected" #simplified line for testing 
    print "sleeping" 
    sleep(10) 

如果沒有記錄匹配輸出的是:

running SQL query 
sleeping 
running SQL query 
sleeping 

手動創建SQL記錄,將匹配(允許時間for循環重複),輸出仍然是:

running SQL query 
sleeping 
running SQL query 
sleeping 

停止腳本並重新啓動,測試輸出爲預期:

running SQL query 
change detected 
sleeping 

所以結果被緩存?或者查詢沒有被重新運行?

我將如何應對這種情況,銘記查詢運行相當頻繁(我做了奇蹟關於關閉數據庫連接和重新開放每次,但這似乎過分了?)

回答

0

如果你看Documentation對於commit(),它可以提示您的代碼無法工作的原因。

嘗試在sleep(10)之後使用database.commit()並查看它是否有效。

+0

謝謝,這似乎工作。我仍然有點困惑,因爲我的代碼沒有寫入數據庫(我認爲提交只是爲了應用更改)。我現在假設,儘管這段代碼沒有做任何改變,但提交是'完成/關閉'當前查詢,以便當查詢重複時(在我的代碼中),我正在查看一組新的結果而不是以前的查詢結果。 – user1676300

+0

正是!問題解決了:) –