【发布时间】:2018-06-05 03:43:52
【问题描述】:
如何在 SQLAlchemy ORM 中模拟以下原始 sql?
SELECT "http://example.com/page/"||table.pagename as pageUrl
需要从表中获取值,使用 ORM/Python 进行修改(这里只是一个字符串连接),并将 SQLAlchemy 查询的结果作为附加字段输出。
【问题讨论】:
标签: python sqlalchemy
如何在 SQLAlchemy ORM 中模拟以下原始 sql?
SELECT "http://example.com/page/"||table.pagename as pageUrl
需要从表中获取值,使用 ORM/Python 进行修改(这里只是一个字符串连接),并将 SQLAlchemy 查询的结果作为附加字段输出。
【问题讨论】:
标签: python sqlalchemy
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
【讨论】:
这个可以通过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(上面的答案)解决似乎更方便。它很短,并且可以轻松转换为 dict 的 result 类。
【讨论】: