使用SQLAlchemy,有没有办法事先知道关系是否会延迟加载?
例如,给定一个惰性parent-> children关系和一个实例X"parent",我想知道是否已经加载了"X.children",而没有触发查询.
您可以从中获取所有已卸载属性(关系和列)的列表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
我认为您可以查看孩子的__dict__
属性字典以检查数据是否已经存在。