2011-11-01 37 views
5

Tôi cần thực thi 2 chọn trong SQLAlchemy. Ví dụ:Liên kết SQLAlchemy với số cột khác nhau

select1 = Session.query(col1, col2, col3, col4).filter(...) 
select2 = Session.query(col1, "", "", col4).filter(...) 
result = select1.union(select2).all() 

Vấn đề là vậy. Tôi không biết cách viết giá trị "" trong select2 với SQLAlchemy.

Cảm ơn.

Trả lời

6

Bạn có muốn có một số sự kết hợp của column, literal_column hoặc null, đó là trong sqlalchemy.sql mô-đun:

>>> print Query((t.c.col1, 
...    t.c.col2, 
...    t.c.col3, 
...    t.c.col4)) \ 
... .union(
...  Query((t.c.col1, 
...    sqlalchemy.sql.null().label('c2'), 
...    sqlalchemy.sql.literal_column('""').label('c3'), 
...    t.c.col2)) 
...  ) 
SELECT anon_1.table_col1 AS anon_1_table_col1, anon_1.table_col2 AS anon_1_table_col2, anon_1.table_col3 AS anon_1_table_col3, anon_1.table_col4 AS anon_1_table_col4 
FROM (SELECT "table".col1 AS table_col1, "table".col2 AS table_col2, "table".col3 AS table_col3, "table".col4 AS table_col4 
FROM "table" UNION SELECT "table".col1 AS table_col1, NULL AS c2, "" AS c3, "table".col2 AS table_col2 
FROM "table") AS anon_1 
>>> 
Các vấn đề liên quan