]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
context manager support for sql transactions
authorAnts Aasma <ants.aasma@gmail.com>
Sat, 14 Jul 2007 01:20:53 +0000 (01:20 +0000)
committerAnts Aasma <ants.aasma@gmail.com>
Sat, 14 Jul 2007 01:20:53 +0000 (01:20 +0000)
CHANGES
lib/sqlalchemy/engine/base.py

diff --git a/CHANGES b/CHANGES
index f975a3c20e59b12e38b98779b44f238fdad16347..194fefc5b0ba02bb9eb906af8746dc8741e166d0 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -73,6 +73,7 @@
       columns joined by a "group" to load as "undeferred".
 
 - sql
+  - added context manager (with statement) support for transactions
   - added support for two phase commit, works with mysql and postgres so far.
   - added a subtransaction implementation that uses savepoints.
   - added support for savepoints.
index 40c5e9bb38ae9dce65adf1551561dac4f2f6f596..1143fbf59a047ee0d838cc3f087eeb84bde660d0 100644 (file)
@@ -855,6 +855,15 @@ class Transaction(object):
     def _do_commit(self):
         pass
 
+    def __enter__(self):
+        return self
+
+    def __exit__(self, type, value, traceback):
+        if type is None and self._is_active:
+            self.commit()
+        else:
+            self.rollback()
+
 class RootTransaction(Transaction):
     def __init__(self, connection):
         super(RootTransaction, self).__init__(connection, None)