在查询结果中添加自己的文字字符串作为附加字段 - SQLAlchemy

时间:2018-06-04 15:24:36

标签: python sqlalchemy

如何在SQLAlchemy ORM中模拟以下原始sql?

SELECT "http://example.com/page/"||table.pagename as pageUrl

需要从表中获取值,使用ORM / Python进行修改(此处只是字符串连接),并将SQLAlchemy查询的结果输出为附加字段。

2 个答案:

答案 0 :(得分:1)

SQLAlchemy字符串类型具有运算符重载,允许您像处理这种情况下的Python字符串一样对待它们(字符串连接),但会生成SQL表达式:

session.query(
        Table,
        ("http://example.com/page/" + Table.pagename).label("pageUrl"))

您可以在此处详细了解SQLAlchemy的运算符范例:http://docs.sqlalchemy.org/en/latest/core/tutorial.html#operators

答案 1 :(得分:0)

这可以通过select进行,但几乎没有ORM:

from sqlalchemy.sql import select, text
q = select([text('"http://example.com/page/"||pagename as pageUrl')]).select_from(Table)
session.execute(q).fetchall()

结果将是RowProxy类中的对象列表。

对我来说似乎通过session.query(上面的答案)解决更方便。它很短,导致result类可以轻松转换为dict。