gpt4 book ai didi

python - SQLAlchemy LazyLoading 的工作原理

转载 作者:行者123 更新时间:2023-12-01 02:27:23 27 4
gpt4 key购买 nike

您好,我想了解 sqlalchemy 延迟加载是如何工作的?假设我有这个查询

results = (
session.query(Parent).
options(lazyload(Parent.children)).
filter(Parent.id == 1).
all()
)

for parent in results:
logging.error(parent.children)

我想知道如果我在for循环中访问parent.children,这会创建一个新的select语句吗?或者记录或parent.children 是否已缓存或其他什么?我正在考虑这将如何影响性能。我只是想要最优化的方式。

  1. 我应该使用延迟加载吗?
  2. 访问循环中的每个项目将创建一个新的 sqlalchemy
  3. 如何查明 sqlalchemy 是否正在运行查询? (只是想知道访问每个条目是否会创建一个选择语句

最佳答案

  1. 也许吧。
  2. 您的意思是发出新查询吗?答案是yes ,这就是 lazyload() 的要点。关系集合属性是在第一次访问时延迟填充的。另一方面,如果您希望避免可能的 N+1 情况,您可以使用 joinedload()相反,为了在同一查询中填充子项。
  3. 使用logging 。在您的引擎配置中传递 echo=True

关于python - SQLAlchemy LazyLoading 的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47241641/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com