1
我有下面的示例代碼:SQLAlchemy的核心union_all不加括號
queries = []
q1 = select([columns]).where(table.c.id == #).limit(#)
queries.append(q1)
q2 = select([columns]).where(table.c.id == #).limit(#)
queries.append(q2)
final_query = union_all(*queries)
生成的SQL應該是這樣的:
(select columns from table where id = # limit #)
UNION ALL
(select columns from table where id = # limit #)
但是,我越來越
select columns from table where id = # limit #
UNION ALL
select columns from table where id = # limit #
我嘗試使用subquery
,我的查詢如下:
q1 = subquery(select([columns]).where(table.c.id == #).limit(#))
生成的查詢則是這樣的:
SELECT UNION ALL SELECT UNION ALL
我也想這樣做
q1 = select([columns]).where(table.c.id == #).limit(#)).subquery()
但是,我得到的錯誤:
'Select' object has no attribute 'subquery'
任何幫助,以獲得所需的輸出與我的子查詢包裹在括號?
注意:這不是question的重複,因爲我沒有使用Session。
編輯
好吧,這工作,但我不認爲這是非常有效的,而且它增加一個額外的select * from (my sub query)
,但它的作品。
q1 = select('*').select_from((select(columns).where(table.c.id == #).limit(#)).alias('q1'))
所以,如果任何人有任何想法優化,或讓我知道這是否如它得到。我會很感激。