From: Ants Aasma Date: Sat, 14 Jul 2007 01:20:53 +0000 (+0000) Subject: context manager support for sql transactions X-Git-Tag: rel_0_4_6~112 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=74dfa23a63707b43693125f4b93d099df7f88372;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git context manager support for sql transactions --- diff --git a/CHANGES b/CHANGES index f975a3c20e..194fefc5b0 100644 --- 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. diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py index 40c5e9bb38..1143fbf59a 100644 --- a/lib/sqlalchemy/engine/base.py +++ b/lib/sqlalchemy/engine/base.py @@ -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)