繁体   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