簡體   English   中英

SQLAlchemy中的外鍵查詢

[英]Foreign key querines in SQLAlchemy

來自Django ORM之后,我還是SQLAlchemy的新手。 我正在嘗試創建一個簡單的嵌套設置模式,我想做父母查找。 我想在Django ORM中這樣做:

Page.objects.get(slug="currentlevel",parent__slug="secondlevel",parent__parent__slug="firstlevel")

這將自動查詢數據庫中的每個父項,並返回相關的頁面行。

在SQLAlchemy中,我能想到的最好的方法是:

session.query(Page).join(Page.parent, aliased=True).filter_by(slug="child")

因此,我可以查詢直接父項,但是如何在一個查詢中繼續上鏈? 盡可能動態(任意級別的數量)

請記住,我是SQLAlchemy的新手,來自相對庇護的Django ORM。 我確定SQLAchemy文檔中有信息,但我已經閱讀了它,而且似乎找不到它。

謝謝你的幫助。

沒錯,sqlalchemy文檔中“ Self-Referential Query Strategies下的所有信息都正確。 在這種情況下,您的初始查詢將如下所示:

from sqlalchemy.orm import aliased
page1 = aliased(Page)
page2 = aliased(Page)
qry = (session
        .query(Page).filter(Page.slug=='currentlevel')
        .join(page1, Page.parent).filter(page1.slug=="secondlevel")
        .join(page2, page1.parent).filter(page2.slug=="firstlevel")
        )

或者,使用aliased (帶有from_joinpoint )參數,稍微短一些:

qry = (session
        .query(Page).filter(Page.slug=='currentlevel')
        .join(Page.parent, aliased=True).filter(Page.slug=="secondlevel")
        .join(Page.parent, aliased=True, from_joinpoint=True).filter(Page.slug=="firstlevel")
        )

暫無
暫無

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

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