Python 如何防止在SQLAchemy中删除时触发'before_update'事件?

Python 如何防止在SQLAchemy中删除时触发'before_update'事件?,python,sqlalchemy,Python,Sqlalchemy,我为SQLAlchemy模型提供了一个特殊的验证器: class MyModel(db.Model): id = Column(Integer, primary_key=True) name = Column(Unicode(length=16), default=u'') is_active = Column(Boolean, default=False) @listens_for(MyModel, 'before_update') def complex_const

我为SQLAlchemy模型提供了一个特殊的验证器:

class MyModel(db.Model):
    id = Column(Integer, primary_key=True)
    name = Column(Unicode(length=16), default=u'')
    is_active = Column(Boolean, default=False)

@listens_for(MyModel, 'before_update')
def complex_constraint(mapper, connection, target):
     # checks uniqueness of an instance using complex rule
     ....
当我试图删除
MyModel
的实例时,出于某种原因,SQLAlchemy在更新之前调用
处理程序:

MyModel.query.filter(MyModel.name=='Dave').delete()
所以我的问题是:

  • 为什么SQLAlchemy在我尝试删除一个 实例
  • 如何防止或解决这种行为?更好吗 解决方案不是暂时关闭此事件的事件处理 模特儿

  • 您还应该发布
    MyModel
    类。poosibly related@RedBaron添加了模型示例。没什么特别的。没有树结构。
    过滤器(MyModel.name=='Dave')
    ,请注意
    ==
    。我猜
    =
    意味着分配,所以实例被标记为脏实例,并触发更新。@RedBaron抱歉。我的错误是格式化了一个示例。通过
    ==
    我看到了同样的效果。