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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

怎么做到呢?

答案

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

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

以上是关于Python sqlalchemy查询标签或别名结果两列作为新列名的主要内容,如果未能解决你的问题,请参考以下文章

SQLAlchemy教程-第四章-SQL常用查询的ORM写法进阶2-待完善

如何在 sqlalchemy 查询过滤器中使用用户定义的 python 函数?

SQLAlchemy

SQLAlchemy 中的 Session、sessionmaker、scoped_session

在 SQLAlchemy 的 HAVING() 子句中使用标签

Python 之 sqlalchemy查询数据