Source code for watson.db.contextmanagers
# -*- coding: utf-8 -*-
from contextlib import contextmanager
@contextmanager
[docs]def transaction_scope(session):
"""Provides a transactional scope for session calls.
See:
- http://docs.sqlalchemy.org/en/latest/orm/session.html
Example:
.. code-block:: python
class MyController(controllers.Rest):
def GET(self):
with session(self.db):
session.add(Model())
"""
try:
yield session
session.commit()
except:
session.rollback()
raise
finally:
session.close()