トランザクションに対してローカルである通常のSQLAlchemyIDマップに加えて、「キャッシュ」が機能していると考える人々の通常の原因は、トランザクション分離の影響を観察していることです。 SQLAlchemyのセッションは、デフォルトでトランザクションモードで動作します。つまり、session.commit()
まで待機します。 データをデータベースに永続化するために呼び出されます。この間、他の場所で進行中の他のトランザクションにはこのデータは表示されません。
ただし、トランザクションは孤立しているため、さらにひねりがあります。進行中の他のトランザクションは、コミットされるまでトランザクションのデータを表示しないだけでなく、場合によっては、コミットまたはロールバックされるまでデータを表示できません。 また(これは、close()がここで持っているのと同じ効果です)。平均的な程度の分離のトランザクション これまでにロードされた状態を保持し、実際のデータが変更された場合でも、トランザクションに対してローカルで同じ状態を提供し続けます。これは、繰り返し可能な読み取りと呼ばれます。 トランザクション分離用語で。
http://en.wikipedia.org/wiki/Isolation_%28database_systems%29