diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-12-09 10:04:23 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-12-09 10:04:23 -0500 |
| commit | 6e4515948f87a2299461003c709393b68453d2d0 (patch) | |
| tree | 9fad0361163f5c0e8670fae9fabb6183266e4bae | |
| parent | 2cbf1e590f87df848a42c18aa17e0dfb12443852 (diff) | |
| download | sqlalchemy-6e4515948f87a2299461003c709393b68453d2d0.tar.gz | |
- further fixes to no trans in progress, no trans ever for TLEngine, [ticket:1998]
| -rw-r--r-- | lib/sqlalchemy/engine/threadlocal.py | 9 | ||||
| -rw-r--r-- | test/engine/test_transaction.py | 24 |
2 files changed, 30 insertions, 3 deletions
diff --git a/lib/sqlalchemy/engine/threadlocal.py b/lib/sqlalchemy/engine/threadlocal.py index 6b222680c..adcce08c6 100644 --- a/lib/sqlalchemy/engine/threadlocal.py +++ b/lib/sqlalchemy/engine/threadlocal.py @@ -77,18 +77,21 @@ class TLEngine(base.Engine): self._connections.trans.append(self.contextual_connect().begin()) def prepare(self): - if not self._connections.trans: + if not hasattr(self._connections, 'trans') or \ + not self._connections.trans: return self._connections.trans[-1].prepare() def commit(self): - if not self._connections.trans: + if not hasattr(self._connections, 'trans') or \ + not self._connections.trans: return trans = self._connections.trans.pop(-1) trans.commit() def rollback(self): - if not self._connections.trans: + if not hasattr(self._connections, 'trans') or \ + not self._connections.trans: return trans = self._connections.trans.pop(-1) trans.rollback() diff --git a/test/engine/test_transaction.py b/test/engine/test_transaction.py index 1e8c33a98..01a561d7b 100644 --- a/test/engine/test_transaction.py +++ b/test/engine/test_transaction.py @@ -543,14 +543,38 @@ class TLTransactionTest(TestBase): tlengine.close() def test_rollback_no_trans(self): + tlengine = create_engine(testing.db.url, strategy="threadlocal") + + # shouldn't fail + tlengine.rollback() + + tlengine.begin() + tlengine.rollback() + # shouldn't fail tlengine.rollback() def test_commit_no_trans(self): + tlengine = create_engine(testing.db.url, strategy="threadlocal") + + # shouldn't fail + tlengine.commit() + + tlengine.begin() + tlengine.rollback() + # shouldn't fail tlengine.commit() def test_prepare_no_trans(self): + tlengine = create_engine(testing.db.url, strategy="threadlocal") + + # shouldn't fail + tlengine.prepare() + + tlengine.begin() + tlengine.rollback() + # shouldn't fail tlengine.prepare() |
