SQLAlchemy union with different number of columns

前端 未结 1 849
攒了一身酷
攒了一身酷 2021-01-05 22:04

I need execute 2 select in SQLAlchemy. For example:

select1 = Session.query(col1, col2, col3, col4).filter(...)
select2 = Session.query(col1, \"\", \"\", col         


        
相关标签:
1条回答
  • 2021-01-05 22:38

    You probably want some combination of column, literal_column or null, which are in the sqlalchemy.sql module:

    >>> 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
    >>> 
    
    0 讨论(0)
提交回复
热议问题