如何在SQLAlchemy ORM中模拟以下原始sql?
SELECT "http://example.com/page/"||table.pagename as pageUrl
需要从表中获取值,使用ORM / Python进行修改(此处只是字符串连接),并将SQLAlchemy查询的结果输出为附加字段。
答案 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。