python - SQL炼金术ORM : modify the columns returned from a query

标签 python orm sqlalchemy

如果我有一个 SQLAlchemy ORM 查询:

admin_users = Session.query(User).filter_by(is_admin=True)

是否可以修改该查询返回的列?

例如,我只能选择 User.id 列,并在子查询中使用它:

admin_email_addresses = Session.query(EmailAddress)\
    .filter(EmailAddress.user_id.in_(admin_users.select_columns(User.id))

注意:.values() 方法将不起作用,因为它执行查询并返回可迭代的结果(例如,EmailAddress.user_id.in_(admin_users.values (User.id)) 将执行两个查询,而不是一个)。

我知道我可以将第一个查询修改为 Session.query(User.id),但我特别想知道如何修改查询返回的列。

最佳答案

我感觉到你对 values() 的痛苦。在 0.6.5 中,我添加了 with_entities(),它与 values() 类似,只是不迭代:

q = q.with_entities(User.id)

关于python - SQL炼金术ORM : modify the columns returned from a query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10677514/

相关文章:

java - 使用 Hibernate 处理不同表中不同记录的排序

python - 如何通过 SqlAlchemy 中的 joinloaded 表进行过滤?

python - 数据类型 nvarchar 和 ntext 在等于运算符中不兼容。 (402) (SQLExecDirectW)') || SqlAlchemy、Sql Azure

python - 如何使用 sqlalchemy 关系实现多个连接

c# - 未调用泛型的 Pythonnet 委托(delegate)方法

python - 如何让 Celery 工作人员返回任务结果

python - 导入错误的文件不存在

python - AWS Lambda : How to manage deployment packages greater than 250mb

mysql - 将 SQLite 转换为 Django ORM

python - Django ORM 查询空 FileFields