Python からの MySQL クエリにより不整合が発生する
コミットしていないため、クエリは最新のデータを取得していない可能性がありますデータベースに変更が加えられます。デフォルトでは、MySQL は分離レベルを「REPEATABLE READ」に設定します。これは、同じトランザクション内での後続のクエリでは、トランザクション中に行われた変更ではなく、データの初期スナップショットが表示されることを意味します。
データが稼働していることを確認するには現在までは、各クエリの後に接続をコミットする必要がありました。これにより、現在のトランザクションが完了し、データベースから最新の変更を取得するための次のトランザクションが準備されます。
必要なコミットを含むコードの更新バージョンは次のとおりです。
<code class="python"># Main loop while True: # SQL query sql = "SELECT * FROM table" # Read the database, store as a dictionary mycursor = mydb.cursor(dictionary=True) mycursor.execute(sql) # Store data in rows myresult = mycursor.fetchall() # Transfer data into list for row in myresult: myList[int(row["rowID"])] = (row["a"], row["b"], row["c"]) print(myList[int(row["rowID"])]) # Commit changes! mydb.commit() print("---") sleep(0.1)</code>
この変更によりを実行すると、コードは各クエリ ループ中にデータベースから最新のデータを取得します。
以上がPython からの MySQL クエリが一貫性のない結果を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。