Events SqlAlchemy:取消事件处理程序操作

Events SqlAlchemy:取消事件处理程序操作,events,sqlalchemy,Events,Sqlalchemy,当我附加到处理程序中的属性事件(“append”)时,是否可以取消append操作 假设我在处理程序中对每个附加的记录都进行了一些验证,如果该记录没有通过验证,我希望跳过该记录。有关执行验证的另一种方法,请参阅,这将导致代码更干净。根据文件: 然后,该函数可以引发验证异常以停止进程 继续(其中Python内置的ValueError和AssertionError 异常是合理的选择),或者可以修改或替换该值 在继续之前。否则,函数应返回给定的 价值观 根据文档,您可以修改添加到集合中的值。但是为了完

当我附加到处理程序中的属性事件(“append”)时,是否可以取消append操作

假设我在处理程序中对每个附加的记录都进行了一些验证,如果该记录没有通过验证,我希望跳过该记录。

有关执行验证的另一种方法,请参阅,这将导致代码更干净。根据文件:

然后,该函数可以引发验证异常以停止进程 继续(其中Python内置的ValueError和AssertionError 异常是合理的选择),或者可以修改或替换该值 在继续之前。否则,函数应返回给定的 价值观

根据文档,您可以修改添加到集合中的值。但是为了完全避免添加它,您需要提出一个异常。显然,您需要在外部代码中处理此异常:

def _add_addresses(user, address_list):
    for address in address_list:
        try:
            user.addresses.append(address)
        catch ValueError as _exc:
            logging.warn("Could not add Address [%s] to the User [%s]", address, user.name)
def _add_addresses(user, address_list):
    for address in address_list:
        try:
            user.addresses.append(address)
        catch ValueError as _exc:
            logging.warn("Could not add Address [%s] to the User [%s]", address, user.name)