SQLAlchemy SELECT WITH 子句/语句 (pgsql)

问题描述 投票:0回答:1

如何在 sqlalchemy 中执行使用

WITH
的 SQL 查询?

WITH foo AS (...), bar as (...) SELECT (...)

http://www.postgresql.org/docs/9.1/static/queries-with.html

使用 postgres。

postgresql sqlalchemy common-table-expression
1个回答
28
投票

SQLAlchemy 作者在此电子邮件线程中的这段代码可能会有所帮助

q1 = s.query(distinct(Appl.refid), Appl).\ 
        filter(Appl.lastname.ilike('Williamson%')).\ 
        filter(Appl.firstname.ilike('d%')).\ 
        group_by(Appl).\ 
        order_by(Appl.refid, Appl.appldate.desc()) 

q1 = q1.cte('distinct_query') 
q2 = s.query(q1).order_by(q1.c.lastname, q1.c.firstname) 
q2.all() 

输出为:

WITH distinct_query AS
         (SELECT DISTINCT appl.refid     AS anon_1,
                          appl.id        AS id,
                          appl.firstname AS firstname,
                          appl.lastname  AS lastname,
                          appl.refid     AS refid,
                          appl.appldate  AS appldate
          FROM appl
          WHERE appl.lastname ILIKE % (lastname_1)s AND appl.firstname ILIKE %(firstname_1)s
          GROUP BY appl.id, appl.firstname, appl.lastname, appl.refid, appl.appldate
          ORDER BY appl.refid, appl.appldate DESC)
SELECT distinct_query.anon_1    AS distinct_query_anon_1,
       distinct_query.id        AS distinct_query_id,
       distinct_query.firstname AS distinct_query_firstname,
       distinct_query.lastname  AS distinct_query_lastname,
       distinct_query.refid     AS distinct_query_refid,
       distinct_query.appldate  AS distinct_query_appldate
FROM distinct_query
ORDER BY distinct_query.lastname, distinct_query.firstname 
© www.soinside.com 2019 - 2024. All rights reserved.