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

问题描述 投票:0回答:1

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

表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)

怎么做到呢?

python sqlalchemy
1个回答
2
投票

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

from sqlalchemy import func     
q = session.query(Table1.column1, func.coalesce(Table2.column1, Table2.column2).label('content')) \
    .outerjoin(Table2) \
    .all()
© www.soinside.com 2019 - 2024. All rights reserved.