SQLAlchemy - 聚合内部查询加入外部查询

时间:2016-01-23 21:28:50

标签: python postgresql sqlalchemy

以下是我试图在SQLAlchemy中编写的查询示例,但没有太多运气。我是SQLA的新手,能够转换一些查询但不是这个:

select car, min(units)
from (
    select car,
    (select sum(case when side = 0 then 1 else -1 end * doors)
        from p.trades i
        where i.car = o.car and i.date = o.date
        and i.server_time <= o.server_time) units
    from p.trades o
    where date = '2016-01-19'
    and car in ('Golf')
    order by server_time, trade_id
) boff
group by car

任何人都可以提供帮助吗?

谢谢,非常感谢

1 个答案:

答案 0 :(得分:1)

我知道这不是你所期望的,但我只是使用SQL查询。 我使用了几个不同的ORM,我的经验是,通常不值得尝试使用类似对象的语法编写相对复杂的查询。

任何简单的操作,例如读/写记录或执行简单查询,通常都很明显且清晰,因此编写和维护它很容易。 对于更复杂的查询,您最初都会花时间转换为ORM语言并在以后花时间,需要修改它时,记住它是如何工作的,并了解它是如何被修改的。

所以我会这样做:

    data = session.query(MyModel).from_statement(text(
        """
        select * from 
          ....
          ....
        """)).params(x=a, y=b).all()