2016-01-23 84 views
0

以下是我试图在SQLAlchemy中编写而没有太多运气的查询的示例。我是很新的SQLA和我能够在一定的查询转换,但不这样的:SQLAlchemy - 聚合内部查询加入到外部查询

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

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

任何简单的事情,比如读写记录或者做一个简单的查询,通常都是很明显和清晰的,所以很容易写和维护。 对于更复杂的查询,您将花最初的时间转换为ORM语言,稍后花费时间,需要修改时,记住它如何工作并了解如何修改它。

所以我只是这样做:

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