SQLAlchemy を利用する場合、MySQL データベースにデータを挿入および更新するときにキャッシュの問題が発生する可能性があります。 SQLAlchemy によって取得された古いデータと更新されたデータの不一致は、キャッシュの存在を示唆しています。この問題を解決するには、キャッシュを無効にすることができます。
根本的な問題
キャッシュとよく間違われる、この動作は SQLAlchemy のトランザクション分離の概念に由来しています。デフォルトでは、そのセッションはトランザクション モードで動作し、session.commit() が呼び出されるまでデータの変更を保持します。この期間中、他の同時トランザクションはこれらの変化を認識しません。
トランザクション分離ツイスト
ただし、トランザクション分離では追加のレイヤーが導入されます。これらの同時トランザクションはコミットされていないデータを見逃すだけでなく、それぞれのトランザクションがコミットまたはロールバックされるまで古い情報を表示し続ける可能性があります。
Repeatable Reads
In平均的な分離レベルのトランザクションでは、ロードされた状態はトランザクション内で持続します。これは、基礎となるデータベースの変更にもかかわらず、変更されていない同じデータを返すことを意味します。これは反復読み取りとして知られる現象です。
解決策
この問題を修正し、正確なデータ取得を保証するには、次のことを検討してください。次の解決策:
以上がSQLAlchemy がデータをキャッシュしているように見えるのはなぜですか? この MySQL の問題を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。