2016-09-18 10 views
0

MySQL Connector/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は、単純なSELECTクエリで、それが(それゆえ[0]最後に、それが唯一のでしょうnamedtupleのはfetchAllを返します。すべての肉がなければ、ここでのループがある(プリントは、テスト目的のためにそこにあります

初期値を取得した後でも、値を変更しても値が返され続けるという問題があります。たとえば、開始する「0」の場合は、「0」のまま印刷されます。私が管理者に行って変更しても、新しい端末を開いて変更してコミットしたとしても、私はquery_cache_sizeを0に設定しようとしましたが、まだ運がありませんでした。コミットの問題だと思っていましたが、私はそれを変更して再接続すれば、私はその変化を見ることができますが、私はwhプログラム中には変更されません。何かご意見は?

EDIT:私がカーソルを閉じて、すべての呼び出しで新しいカーソルをつかんでいます。

+0

それをしました。それを回答に入れると、私はそれを受け入れることができます。ありがとう。 – linus72982

答えて

0

InnoDBのデフォルトisolation levelREPEATABLE READです。これは、その後の一貫性のある文が、トランザクション内の最初のものによって確立されたものと同じスナップショットを読み込むことを意味します。あなたはカーソルを開閉していますが、おそらくトランザクション内でそれをやっているので、確立されたスナップショットを何度も読んでいます。 ROLLBACKまたはCOMMITのいずれかを指定すると、現在のトランザクションが終了し、スナップショット取得後にコミットされた値を読み取ることができます。

関連する問題