diff options
Diffstat (limited to 'lib/sqlalchemy/engine/threadlocal.py')
-rw-r--r-- | lib/sqlalchemy/engine/threadlocal.py | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/lib/sqlalchemy/engine/threadlocal.py b/lib/sqlalchemy/engine/threadlocal.py index a083d0113..2ce0922bf 100644 --- a/lib/sqlalchemy/engine/threadlocal.py +++ b/lib/sqlalchemy/engine/threadlocal.py @@ -19,11 +19,11 @@ class TLConnection(base.Connection): def __init__(self, *arg, **kw): super(TLConnection, self).__init__(*arg, **kw) self.__opencount = 0 - + def _increment_connect(self): self.__opencount += 1 return self - + def close(self): if self.__opencount == 1: base.Connection.close(self) @@ -52,21 +52,21 @@ class TLEngine(base.Engine): self._connections = util.threading.local() dispatch = event.dispatcher(TLEvents) - + def contextual_connect(self, **kw): if not hasattr(self._connections, 'conn'): connection = None else: connection = self._connections.conn() - + if connection is None or connection.closed: # guards against pool-level reapers, if desired. # or not connection.connection.is_valid: connection = self.TLConnection(self, self.pool.connect(), **kw) self._connections.conn = conn = weakref.ref(connection) - + return connection._increment_connect() - + def begin_twophase(self, xid=None): if not hasattr(self._connections, 'trans'): self._connections.trans = [] @@ -76,42 +76,42 @@ class TLEngine(base.Engine): if not hasattr(self._connections, 'trans'): self._connections.trans = [] self._connections.trans.append(self.contextual_connect().begin_nested()) - + def begin(self): if not hasattr(self._connections, 'trans'): self._connections.trans = [] self._connections.trans.append(self.contextual_connect().begin()) - + def prepare(self): if not hasattr(self._connections, 'trans') or \ not self._connections.trans: return self._connections.trans[-1].prepare() - + def commit(self): 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 hasattr(self._connections, 'trans') or \ not self._connections.trans: return trans = self._connections.trans.pop(-1) trans.rollback() - + def dispose(self): self._connections = util.threading.local() super(TLEngine, self).dispose() - + @property def closed(self): return not hasattr(self._connections, 'conn') or \ self._connections.conn() is None or \ self._connections.conn().closed - + def close(self): if not self.closed: self.contextual_connect().close() @@ -119,6 +119,6 @@ class TLEngine(base.Engine): connection._force_close() del self._connections.conn self._connections.trans = [] - + def __repr__(self): return 'TLEngine(%s)' % str(self.url) |