def gen_commit_deco(DBSession):
def wrap(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
register_db_commit = getattr(db_ctx, 'register_db_commit', False)
if not register_db_commit:
db_ctx.register_db_commit = True
result = func(*args, **kwargs)
if not register_db_commit:
try:
DBSession().flush()
DBSession().commit()
except SQLAlchemyError:
DBSession().rollback()
raise
finally:
DBSession().close()
delattr(db_ctx, 'register_db_commit')
return result
return wrapper
return wrap
评论列表
文章目录