2016-01-23 95 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()