簡體   English   中英

SQLAlchemy 嵌套 CTE 查詢

[英]SQLAlchemy Nested CTE Query

sqlalchemy 核心查詢生成器似乎取消嵌套 CTE 查詢並將其重新定位到已編譯 sql 的“頂部”。

我正在轉換一個現有的 Postgres 查詢,該查詢選擇深度連接的數據作為單個 JSON object。 語法相當做作,但它顯着減少了大型查詢的網絡開銷。 目標是使用 sqlalchemy 核心查詢構建器動態構建查詢。

這是嵌套 CTE 的最小工作示例

with res_cte as (
    select
        account_0.name acct_name,
        (
            with offer_cte as (
                select
                    offer_0.id
                from
                    offer offer_0
                where
                    offer_0.account_id = account_0.id
            )
            select
                array_agg(offer_cte.id)
            from
                offer_cte
        ) as offer_arr
    from
        account account_0
)
select 
    acct_name::text, offer_arr::text
from res_cte

結果

acct_name,  offer_arr
---------------------
oliver,     null
rachel,     {3}
buddy,      {4,5}

(我的錯誤使用)核心查詢構建器嘗試offer_cte並導致每個offer.id與結果中的每個account_name相關聯。

無需在答案中重新實現這個確切的查詢,任何導致類似嵌套 CTE 的示例都是完美的。

收到 sqla 團隊的確認,即目前不可能或在任何路線圖https://github.com/sqlalchemy/sqlalchemy/issues/5335#issuecomment-630838687

暫無
暫無

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

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