您好,我想了解 sqlalchemy 延迟加载是如何工作的?假设我有这个查询
results = (
session.query(Parent).
options(lazyload(Parent.children)).
filter(Parent.id == 1).
all()
)
for parent in results:
logging.error(parent.children)
Run Code Online (Sandbox Code Playgroud)
我想知道如果我在for循环中访问parent.children,这会创建一个新的select语句吗?或者记录或parent.children 是否已缓存或其他什么?我正在考虑这将如何影响性能。我只是想要最优化的方式。
lazyload()。关系集合属性是在第一次访问时延迟填充的。另一方面,如果您希望避免可能的 N+1 情况,您可以使用例如joinedload()代替来填充同一查询中的子项。echo=True您的引擎配置。| 归档时间: |
|
| 查看次数: |
7791 次 |
| 最近记录: |