У меня есть код, использующий TestModel, который наследует playhouse.postgres_ext.Model, экземпляр PostgreSQL как sql_db , экземпляр SMTP как smtp для уведомления
@sql_db.atomic()
def update_jersey():
TestModel.update(TestModel.jersey_number=24).where(TestModel.first_name="kobe").execute()
smtp.sendmail(*args, **kwargs)
Я хочу, чтобы мой TestModel.update () выполнял откат при сбое smtp.sendmail (), но в настоящее время код не откатывает обновление.
Я также попытался использовать приведенную ниже логи c но все же откат не работает.
with sql_db.manual_commit():
sql_db.begin()
try:
TestModel.update()
smtp.sendmail()
except Exception:
sql_db.rollback()
else:
sql_db.commit()
Я также попробовал sql_db.transaction () как txn , но все равно не повезло.
Как я могу реализовать откат с учетом того, что исключение вызвано другой функцией и не связано с SQL?