两列的Python sqlalchemy查询标签或别名结果作为新列名

时间:2018-08-13 06:10:15

标签: python sqlalchemy

我有两个表,其中一个表有两列,一行将仅包含其中一列的数据:

表2:

|  column1  |  column2  |
-------------------------
| something |   Null    |
-------------------------
| Null      | something |
-------------------------

我正在尝试做类似的事情:

q = session.query(Table1.column1, (Table2.column1, Table2.column2).label('content')) \
.outerjoin(Table2) \
.all()

for v in q:
    x = v.column1
    content = v.content
    print(x, content)

怎么办?

1 个答案:

答案 0 :(得分:3)

SQL合并应该有所帮助。它将返回值列表中的第一个非空值。

from sqlalchemy import func     
q = session.query(Table1.column1, func.coalesce(Table2.column1, Table2.column2).label('content')) \
    .outerjoin(Table2) \
    .all()