diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sqlalchemy/orm/session.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/sqlalchemy/orm/session.py b/lib/sqlalchemy/orm/session.py index f2a718177..4935b0481 100644 --- a/lib/sqlalchemy/orm/session.py +++ b/lib/sqlalchemy/orm/session.py @@ -69,6 +69,15 @@ class SessionTransaction(object): if t[2]: t[0].close() self.session.transaction = None + def __enter__(self): + return self + def __exit__(self, type, value, traceback): + if self.session.transaction is None: + return + if type is None: + self.commit() + else: + self.rollback() class Session(object): """encapsulates a set of objects being operated upon within an object-relational operation. @@ -452,4 +461,4 @@ def object_session(obj): unitofwork.object_session = object_session from sqlalchemy.orm import mapper -mapper.attribute_manager = attribute_manager
\ No newline at end of file +mapper.attribute_manager = attribute_manager |
