Без примера кода сложно понять, но я использую декоратор для функций работы с БД.
def catch_session(func):
"""Decorator for Session"""
@wraps(func)
def wrapper(self, *args, **kwargs):
print(f"Try calling db func: {func.__name__}")
result = func(self, *args, **kwargs)
try:
self.session.commit()
print(f"Success calling db func: {func.__name__}\n")
except SQLAlchemyError as e:
print(f"Error - {e}\n")
self.session.rollback()
finally:
self.session.close()
return result
return wrapper
просто оборачиваете им функцию и он сам делает
commit если не было ошибок, если было то
rollback и сообщение об ошибке.
взято
отсюда