在SqlAlchemy中,我需要使用给定的字段列表获取部分实体。
其他答案建议执行以下任何操作:
session.query(User.id, User.login).all()
session.query(User).with_entities(User.id, User.login).all()
然而,SA然后返回列元组:
[ (1, 'user1'), (2, 'user2') ]
如何获取User的对象而不是元组并限制检索到的列?
答案 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
列)。