summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/sqlalchemy/orm/session.py11
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