首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在sqlalchemy中生成此查询?

如何在sqlalchemy中生成此查询?
EN

Stack Overflow用户
提问于 2010-07-23 20:41:08
回答 1查看 4K关注 0票数 6

我想在sqlalchemy中生成这个查询。数据库中存在表'demande‘。有一个使用generate_series函数生成时间步长的子查询。

代码语言:javascript
复制
SELECT
    timesteps.timestep AS timestep, d.count AS count
FROM
    (SELECT
        DATE_TRUNC('hour',date_demande) AS timestep,
        COUNT(id) AS count
     FROM
        demande
     GROUP BY
        timestep
    ) AS d

RIGHT OUTER JOIN
    (SELECT
        timestep
     FROM
        generate_series('2010-01-01 00:00:00'::timestamp,
                        '2010-01-01 23:59:59'::timestamp,
                        '1 hour'::interval) AS timestep
     ) AS timesteps
  ON d.timestep = timesteps.timestep

ORDER BY timestep;

我试过了:

代码语言:javascript
复制
stmt = session.query(
        func.
            generate_series(
                datetime.datetime(2010,1,1,0,0,0),
                datetime.datetime(2010,1,1,23,59,59),
                cast('1 hour',Interval())).
            label('timestep')
        ).subquery()
print stmt
q = session.query(
        stmt.c.timestep,
        func.count(Demande.id)).
    outerjoin((Demande, grouped==stmt.c.timestep)).
    group_by(stmt.c.timestep)
print q

但是它会抱怨一个InvalidRequesError:找不到一个from子句来加入。我猜这是由子查询引起的。

如果我试图“反转”查询,它可以工作,但它做了一个‘左外部连接’:

代码语言:javascript
复制
q = session.query(
        func.count(Demande.id),
        stmt.c.timestep).
    outerjoin((stmt, grouped==stmt.c.timestep)).
    group_by(stmt.c.timestep)

由于sqlalchemy中没有正确的外连接,所以我只想找到一种方法,将子查询作为第一个表,并将“demande”表作为第二个表。这样我就可以使用左外部连接了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-20 23:09:17

下面的例子应该会给你一个提示(假设我正确地猜到Demande是声明性模型):

代码语言:javascript
复制
joined = stmt.outerjoin(Demande.__table__, Demande.grouped==stmt.c.timestep)
q = session.query(stmt.c.timestep, func.count(Demande.id)).\
        select_from(joined).\
        group_by(stmt.c.timestep)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3318203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档