我正在使用before_insert在金字塔应用程序中为我的某个模型添加自动验证。
到目前为止,我已经得到了这个:
def Property_before_insert_listener(mapper, connection, target):
formvalidator = PropertySchema()
try:
return formvalidator.to_python(target.__table__.columns)
except formencode.Invalid as error:
print ("***************************************ERROR" + str(error))
event.listen(
Property, 'before_insert', Property_before_insert_listener)
一切似乎都运行正常,我在控制台中打印出正确的错误。但是,在处理错误之后,它继续插入。如何阻止插入发生?
答案 0 :(得分:1)
在Mapper Events的sqlAlquemy文档中,您有一些可能对您有帮助的内容:
<强> RETVAL =假强>
当为True时,用户定义的事件函数必须具有返回值,其目的是控制后续事件传播,或以其他方式改变映射器正在进行的操作。可能的返回&gt;值是:
sqlalchemy.orm.interfaces.EXT_CONTINUE
- 正常继续事件处理。sqlalchemy.orm.interfaces.EXT_STOP
- 取消链中的所有后续事件处理程序。- 其他值 - 特定侦听器指定的返回值。