Jor*_*ril 14 python sqlalchemy
使用SQLAlchemy,有没有办法事先知道关系是否会延迟加载?
例如,给定一个惰性parent-> children关系和一个实例X"parent",我想知道是否已经加载了"X.children",而没有触发查询.
kol*_*pto 15
您可以从中获取所有已卸载属性(关系和列)的列表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
Run Code Online (Sandbox Code Playgroud)