我有两个表,其中一个表有两列,一行将仅包含其中一列的数据:
表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)
怎么办?
答案 0 :(得分:3)
SQL合并应该有所帮助。它将返回值列表中的第一个非空值。
from sqlalchemy import func
q = session.query(Table1.column1, func.coalesce(Table2.column1, Table2.column2).label('content')) \
.outerjoin(Table2) \
.all()