sqlalchemy保存pickle类型db.session.merge()导致db instace自动回滚和提交

时间:2016-08-03 09:29:39

标签: python mysql flask sqlalchemy flask-sqlalchemy

当我使用sqlalchemy时

class obj(db.Model)
    id = db.Column(db.Integer, primary_key=True)
    obj_pickled = db.Column(db.PickleType(protocol=0))   //pickle another db.Model

我可以将选中的obj保存在数据库中,但是当我通过

使用它时
   obj_a = obj()
   db.session.add(obj_a)    
   db.session.commit()   //save success
   obj_a.obj_pickled.property  //error here

它告诉我分离的数据库实例错误。所以我使用

obj_a.obj_pickled = db.session.merge(obj_a.obj_pickled)
obj_a.obj_pickled.property

使得obj_a.obj_pickled的属性可以再次评估。但是这个 这导致我另一个问题。在我调用合并方法之后。 obj_a.obj_pickled似乎回滚到普遍状态,并更改我的数据库。哪个不应该发生/ 所以我该怎么解决呢。

0 个答案:

没有答案