コードのある時点で、特定のオブジェクトが切り離されているように見える状況がありますが、オブジェクト自体を明示的に切り離していません。どの SQLAlchemy メソッド/アクションによって、オブジェクトが分離される可能性がありますか? たぶん、セッションを閉じるか、似たようなものですか?
注: セッションへのオブジェクトの再アタッチについて説明している SQLAlchemy のドキュメントを読みましたが、実際にインスタンスを暗黙的にデタッチできるものについては比較的不足しています。
コードのある時点で、特定のオブジェクトが切り離されているように見える状況がありますが、オブジェクト自体を明示的に切り離していません。どの SQLAlchemy メソッド/アクションによって、オブジェクトが分離される可能性がありますか? たぶん、セッションを閉じるか、似たようなものですか?
注: セッションへのオブジェクトの再アタッチについて説明している SQLAlchemy のドキュメントを読みましたが、実際にインスタンスを暗黙的にデタッチできるものについては比較的不足しています。
session.close() はすべてのオブジェクトを切り離します。前述のロールバックでは、ロールバックされたトランザクションで INSERT されたオブジェクトも切り離されます。
主なものは、セッションを「ロールバック」する場合だと思います。ドキュメントが言うように:
トランザクションの有効期間内にセッションに追加されたときに最初は保留状態だったオブジェクトは、ロールバックされる INSERT ステートメントに対応して消去されます。それらの属性の状態は変更されません。