I got error message: {DetachedInstanceError} Parent instance is not bound to a session; lazy load operation of attribute 'owner' cannot proceed
My python code:
car_obj = my_query_function() # get a Car object
owner_name = car_obj.owner.name # here generate error!
Run Code Online (Sandbox Code Playgroud)
My model:
class Person(EntityClass):
attributes = ['id', 'name']
name = sa.Column(sa.String(250))
class Car(EntityClass):
attributes = ['id', 'brand', 'color', 'purchase_time', 'owner_id']
brand = sa.Column(sa.String(250))
color = sa.Column(sa.String(250))
purchase_time = sa.Column(sa.String(250))
owner_id = sa.Column(DBKeyType, sa.ForeignKey(Person.__tablename__ + '.id'), nullable=False)
owner = relationship('Person', cascade='all, delete-orphan', backref=backref('car', cascade='delete'), single_parent=True)
Run Code Online (Sandbox Code Playgroud)
这与Car和User之间的延迟加载关系设置(多对一关联)有关吗?如何解决这种关系?提前致谢。
我跟踪了文档并通过添加使它起作用 lazy='subquery'
owner = relationship('Person', lazy='subquery', cascade='all, delete-orphan', backref=backref('car', cascade='delete'), single_parent=True)
Run Code Online (Sandbox Code Playgroud)
http://docs.sqlalchemy.org/en/rel_0_9/orm/join_conditions.html
小智 5
joinedload_all()通过添加使其工作session.query(Car).options(),例如:
cars = session.query(Car).options(joinedload_all('*')).all()
session.close()
for car in cars:
"do your struff"
Run Code Online (Sandbox Code Playgroud)
祝你好运
| 归档时间: |
|
| 查看次数: |
6085 次 |
| 最近记录: |