选择具有特定列的部分实体

时间:2014-01-14 23:06:31

标签: python sqlalchemy

在SqlAlchemy中,我需要使用给定的字段列表获取部分实体。

其他答案建议执行以下任何操作:

session.query(User.id, User.login).all()
session.query(User).with_entities(User.id, User.login).all()

然而,SA然后返回列元组:

[ (1, 'user1'), (2, 'user2') ]

如何获取User的对象而不是元组并限制检索到的列?

1 个答案:

答案 0 :(得分:1)

请阅读文档的Deferred Column Loading部分。您可能希望在模型本身上配置默认的deferred行为,但在您的情况下,以下配置应该这样做:

session.query(User).options(defer(User.name, User.nickname, ...)).all()

您必须列出要从数据库中加载的所有列。

如果您很幸运且拥有sa.version>=0.9,您还可以使用load_only

session.query(User).options(load_only(User.id, User.login)).all()

请注意,您应该加载id列(或其他primary_key列)。