当前位置:  开发笔记 > 编程语言 > 正文

如何使用SQLAlchemy找出是否还没有加载惰性关系?

如何解决《如何使用SQLAlchemy找出是否还没有加载惰性关系?》经验,为你挑选了2个好方法。

使用SQLAlchemy,有没有办法事先知道关系是否会延迟加载?
例如,给定一个惰性parent-> children关系和一个实例X"parent",我想知道是否已经加载了"X.children",而没有触发查询.



1> kolypto..:

您可以从中获取所有已卸载属性(关系和列)的列表sqlalchemy.orm.attributes.instance_state(obj).unloaded.

请参阅:使用关系完成对象并避免在sqlalchemy中进行不必要的查询

一种更简单的方法是使用inspect(),它给出了相同的结果:

from sqlalchemy import inspect
from sqlalchemy.orm import lazyload

user = session.query(User).options(lazyload(User.articles)).first()
ins = inspect(user)

ins.unloaded  # <- set or properties that are not yet loaded



2> Haes..:

我认为您可以查看孩子的__dict__属性字典以检查数据是否已经存在。

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有