近来一直埋头到python的编程中。用到了sqlalchemy这个库,记录下以下一个案例。定义两个Model类class A(Model): … child = relationship(‘B’, backref=‘parent’)class B(Model): … a_id = Column(…, ForeignKey(A.id))然后我们要将B实例添加到A实例child中,正确的做法是,先读取A实例到会话中后操作B实例:»> a = A.query.filter(…).first()»> b = B() or B.query.filter(…).first()»> a.child.append(b)»> db.session.commit() OK这样是没有问题,当然留意,让建立B后再读取A实例到会话,提交的时候会提示A实例已经有变化的错误,如下:»> b = B() or B.query.filter(…).first()»> a = A.query.filter(…).first()»> a.child.append(b)»> db.session.commit() ObjectDereferencedError: Can’t emit change event for attribute ‘A.child’ - parent object of type has been garbage collected