1 2 3 4 都行
----
抛砖引玉,1:
def auto_commit(session, f):
....try:
........ret = f()
....except Exception:
........session.rollback()
........raise
....else:
........session.commit()
........return ret
auto_commit(session, lambda: session.add(sth))
2:
from functools import wraps
def auto_commit(f):
....@wraps(f)
....def wrapper(session, *args, **kwargs):
........try:
............ret = f(session)
........except Exception:
............session.rollback()
............raise
........else:
............session.commit()
............return ret
....return wrapper
@
auto_commitdef my_fn(session):
........session.add(sth)
my_fn(session)