如何在db.event.listens_for后运行多个方法(MODEL,"after_....")



您好,我目前有一个使用db.event.listens_for()作为触发器的数据库模型。

例如

@db.event.listens_for(Order, "after_delete")
def update_table_status(mapper, connection, target):
# print('Checking if the table contains orders')
table = Tables.__table__
orders = Order.query.filter_by(tables_id=target.tables_id).filter(Order.checkout_id == None).all()
# print(orders)
# print(target.tables_id)
if len(orders) == 0:
# print('No orders associated to the table.')
connection.execute(table.update().where(table.c.id == target.tables_id).values(active=0))
# firebase_table(target.store_id)
else:
# print('Orders still associated to the table.')
connection.execute(table.update().where(table.c.id == target.tables_id).values(active=1))
# firebase_table(target.store_id)

有没有办法将多个方法组合在一起并仅使用一次装饰器即可执行批处理操作?

也许是一堂课?

@db.event.listens_for(Order, "after_delete")
class OrdersAfterDelete:
def DOA(self):
#do stuff
def DOB(self):
#do stuff

你能试试这样的事情吗:

@db.event.listens_for(Order, "after_delete")
class AfterDeleteListener(object):
def __init__(self, *args, **kwargs):
self.DOA(*args, **kwargs)
def DOA(self, *args, **kwargs):
# do stuff

这基本上与我建议创建一个调用函数的函数相同,但您可以通过这种方式将所有方法组合在一起。

最新更新