ホームページ  >  記事  >  データベース  >  Python MySQL クエリが同じデータを返し続けるのはなぜですか?

Python MySQL クエリが同じデータを返し続けるのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-06 12:29:02600ブラウズ

Why Does My Python MySQL Query Keep Returning the Same Data?

Python から MySQL に対するクエリで同一のデータが生成される

動的データを取得するために Python から MySQL データベースに繰り返しクエリを実行すると、課題が生じます。データベースから新しいデータをフェッチするには、ループ内のクエリを単に反復処理するだけでは不十分であることが知られています。

提供されたコードは、この問題の例です。

<code class="python">for i in range(listSize):
    #...
    mycursor = mydb.cursor(dictionary=True)
    mycursor.execute(sql)
    #...</code>

fetchall を使用した試みでも、fetchmany、および fetchone を実行すると、結果は停滞したままになります。

解決策: 接続のコミット

これを解決するには、各クエリの実行の後に、繋がり。このアクションにより進行中のトランザクションが終了し、新しいトランザクションが開始され、後続のクエリで前のトランザクション中に行われた変更を検出できるようになります。

<code class="python">while True:
    #...
    mycursor = mydb.cursor(dictionary=True)
    mycursor.execute(sql)
    #...
    mydb.commit()
    #...</code>

分離レベルと REPEATABLE READ デフォルト

この概念は分離レベルに根ざしています。デフォルトでは、MySQL は InnoDB に REPEATABLE READ を採用します。これは、トランザクション内で、後続の読み取りでは、トランザクションの最初の読み取りによって確立されたスナップショットが保持されることを意味します。したがって、コミットしないと、後続のクエリでは変更がキャプチャされません。

以上がPython MySQL クエリが同じデータを返し続けるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。