2016-11-23 9 views
1

はレコードの一致出力がない場合、私は 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) 

、MySQLを照会するPythonコードの小さなビットを持っている:

running SQL query 
sleeping 
running SQL query 
sleeping 

手動で(にループのための時間を確保一致するSQLレコードを作成リピート)、出力はまだです:予想通り

running SQL query 
sleeping 
running SQL query 
sleeping 

停止スクリプトと再起動、テスト出力は次のようになります。

running SQL query 
change detected 
sleeping 

結果はキャッシュされていますか?またはクエリは再実行されませんか?私はこれに対処する方法を

は、念頭にクエリが(私は毎回DB接続を閉じて再度開く方法について不思議をしましたが、これは、過剰なようだ?)かなり頻繁に実行される

答えて

0

あなたはDocumentationを見てみるとcommit()の場合は、コードが機能しない理由をヒントできます。

sleep(10)の後にdatabase.commit()を使用して試してみてください。

+0

ありがとう、これは動作するようです。私のコードはデータベースに書き込まれていないので、まだちょっと混乱しています(私はコミットが変更を適用するだけだと思っていました)。私は今、このコードが変更を加えていないのに、コミットが '完了/終了'して、クエリが繰り返されるとき(私のコードで)、私は新しいセットを見ています以前のクエリの結果ではなく結果です。 – user1676300

+0

まさに!質問は解決しました:) –

関連する問題