2016-09-18 55 views
0

使用MySQL連接器/ Python我有一個循環,每2秒鐘檢查一次更改的值。沒有所有的肉,這裏是環(打印有用於測試目的:MySQL/Python - 未出現在循環中的已提交更改

try: 
    while True: 
     request = database.get_row(table="states", wherecol="state", whereval="request_from_interface")[0] 
     print(request.value) 
     time.sleep(2) 
except KeyboardInterrupt: 
    pass 
# back to normal operation 

get_row是一個簡單的選擇查詢,並將其返回namedtuple使用fetchall(因此[0]到了最後,它只會如果它是「0」開始,它會一直打印「0」,如果它是「0」開始,它將保持打印「0」即使我去看望並改變它,即使我打開一個新的終端並改變它並提交,我已經嘗試將query_cache_size設置爲0,但仍然沒有運氣。我認爲這是一個提交問題,如果我改變它並重新連接,我看到了改變,但我不確定是否是wh它在程序中不會改變。有什麼想法嗎?

編輯:萬一它出現,是的我關閉了光標,並抓住每個電話一個新的光標。

+0

這樣做。如果你把它放在答案中,我會很樂意接受它。謝謝。 – linus72982

回答

0

InnoDB的默認isolation levelREPEATABLE READ。這意味着後續一致的SELECT語句將讀取由事務中第一個語句創建的相同快照。雖然你打開和關閉遊標,但你可能是在一個事務內部進行的,所以你一遍又一遍地讀取已建立的快照。可以使用ROLLBACKCOMMIT來結束當前事務,以便讀取創建快照後提交的值。