From af070d037ba4b0787e7bd74add6e5aba04f144d3 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Wed, 7 Nov 2007 18:31:35 +0000 Subject: - fixed the close() method on Transaction when using strategy='threadlocal' --- lib/sqlalchemy/engine/base.py | 2 +- lib/sqlalchemy/engine/threadlocal.py | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'lib/sqlalchemy/engine') diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py index bd82f897d..f554d6a16 100644 --- a/lib/sqlalchemy/engine/base.py +++ b/lib/sqlalchemy/engine/base.py @@ -939,7 +939,7 @@ class Transaction(object): method returns. This is used to cancel a Transaction without affecting the scope of - an enclosign transaction. + an enclosing transaction. """ if not self._parent._is_active: return diff --git a/lib/sqlalchemy/engine/threadlocal.py b/lib/sqlalchemy/engine/threadlocal.py index dc6b6007f..8eb039208 100644 --- a/lib/sqlalchemy/engine/threadlocal.py +++ b/lib/sqlalchemy/engine/threadlocal.py @@ -76,7 +76,11 @@ class TLSession(object): self.reset() elif self.__tcount > 1: self.__tcount -= 1 - + + def close(self): + if self.__tcount == 1: + self.rollback() + def is_begun(self): return self.__tcount > 0 @@ -138,6 +142,9 @@ class TLTransaction(base.Transaction): def commit(self): self._session.commit() + def close(self): + self._session.close() + def __enter__(self): return self -- cgit v1.2.1