python - 遅延読み込み - lazysizes フェードイン




親インスタンスはSessionにバインドされていません。 属性 'account'の遅延ロード操作を続行できません (2)

「分離」とは、 Session関連付けられていないORMオブジェクトを扱っていることを意味します。 Sessionはリレーショナルデータベースへのゲートウェイなので、マッピングされたオブジェクトの属性を参照するときはいつでも、ORMはその属性の現在の値を取得するためにデータベースに戻る必要があります。 一般的には、「添付」オブジェクトのみで作業する必要があります。「分離」は、キャッシュとセッション間でオブジェクトを移動するために使用される一時的な状態です。

Quickieのオブジェクト状態の紹介を参照し、おそらくそのドキュメントの残りの部分も読んでください)。

次の操作を実行しようとしている間:

for line in blines:
    line.account = get_customer(line.AccountCode)

line.account値を代入しようとしてエラーが発生しline.account

DetachedInstanceError: Parent instance <SunLedgerA at 0x16eda4d0> is not bound to a       Session; lazy load operation of attribute 'account' cannot proceed

私は何か間違っているのですか?


このタイプのDetachedInstanceErrorは、クエリセッションを途中で終了すると発生します(つまり、セッション終了後にSQLAlchemyモデルオブジェクトを処理するコードを持つ)。 これは、モデルオブジェクト、IEのレイジーロードされたモデルアトリビュートなどとの対話が絶対に必要ないまで、セッションクロージャを何度もチェックしないという1つの手掛かりです







sqlalchemy