簡體   English   中英

如何獲取sqlalchemy查詢對象的屬性

[英]How to get attribute of a sqlalchemy query object

下面的代碼寫在flask框架的views.py中:

view.py:

motions = db.session.query(
    Motion.id,
    Motion.summary,
    Motion.motion_type_id,
    Motion_Type.description,
    Motion_Type.id,
    Motion.mp_op_type,
    Motion.judge_id,
    Judge.id,
    Judge.name,
    Motion.case_id,
    Case.id,
    Case.summary,
    Case.case_type_id,
    Case_Type.description,
    Case_Type.id,
    Motion.ruling_id,
    Ruling.name,
    Ruling.id
).filter(
    Case.id == Motion.case_id
).order_by(
    Judge.name,
    Case_Type.description,
    Ruling.name,
    Motion_Type.description
)

如何在查詢中獲取屬性? 我希望得到類似的東西:

for x in motions:
    print(x.ruling())

但是,我的錯誤是在views.py中的'motion'中沒有名為'ruling'的屬性。 所以我的問題是,如何在查詢中獲取屬性? 我錯過了什么,或者說,我應該從models.py調用某些東西或在html模板上實例化某些內容嗎? 很迷茫。

問題是你並沒有真正按照設計使用Query API。 看起來你正在尋找這樣的東西(假設你的關系在你的模型中正確設置):

import sqlalchemy as sa
motions_query = db.session.query(
    Motion
).join(
    Motion.case
).join(
    Case.judge
).join(
    Case.case_type
).options(
   sa.orm.contains_eager(Motion.case).contains_eager(Case.judge),
   sa.orm.contains_eager(Case.case_type)
).filter(
    Case.id == Motion.case_id
).order_by(
    Judge.name,
    Case_Type.description,
    Ruling.name,
    Motion_Type.description
)

for motion in motions_query:
    print(motion.case.summary)
    print(motion.case.judge.name)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM