【发布时间】:2021-01-08 13:04:06
【问题描述】:
假设我有两个具有一对多关系的模型 Blog 和 Comment。
class Blog(Base):
id = Column(Integer, primary_key=True)
comments = relationship("Comment")
class Comment(Base):
id = Column(Integer, primary_key=True)
blog = relationship("Blog")
我可以使用这样的子查询有效地查询博客及其 cmets
session.query(Blog).filter(...filter_criteria...).options(subqueryload(Blog.comments)).all()
这会发出两个单独的查询 - 一个用于加载博客,另一个用于加载 cmets。
如果我已经查询了一堆博客对象,我该如何加载 cmets?我在获取博客时不能使用 subqueryload 的原因是应用程序逻辑使用了需要 cmets 的子集博客。
换句话说,如果我在一个列表中有 5 个博客对象,有没有办法有效地加载 cmets,以便我可以通过这种方式访问它们:
blogs = [b1, b2, b3, b4, b5]
# Do something here to efficiently load comments
for blog in blogs:
blog.comments
【问题讨论】:
标签: sqlalchemy