summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/engine/threadlocal.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-08-20 19:07:07 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-08-20 19:07:07 +0000
commit531faf0e187d756bda92a937a77accd86b813339 (patch)
treeb9536fe6cafbdeda5d454f26fed0f06982c87541 /lib/sqlalchemy/engine/threadlocal.py
parentbe16b15f2c0dc33f2491fc6ad1de0f11b1f6c7d4 (diff)
downloadsqlalchemy-531faf0e187d756bda92a937a77accd86b813339.tar.gz
- Engine and TLEngine assume "threadlocal" behavior on Pool; both use connect()
for contextual connection, unique_connection() for non-contextual. - Pool use_threadlocal defaults to True, can be set to false at create_engine() level with pool_threadlocal=False - made all logger statements in pool conditional based on a flag calcualted once. - chagned WeakValueDictionary() used for "threadlocal" pool to be a regular dict referencing weakref objects. WVD had a lot of overhead, apparently. *CAUTION* - im pretty confident about this change, as the threadlocal dict gets explicitly managed anyway, tests pass with PG etc., but keep a close eye on this one regardless.
Diffstat (limited to 'lib/sqlalchemy/engine/threadlocal.py')
-rw-r--r--lib/sqlalchemy/engine/threadlocal.py21
1 files changed, 3 insertions, 18 deletions
diff --git a/lib/sqlalchemy/engine/threadlocal.py b/lib/sqlalchemy/engine/threadlocal.py
index e9843ea2e..dc6b6007f 100644
--- a/lib/sqlalchemy/engine/threadlocal.py
+++ b/lib/sqlalchemy/engine/threadlocal.py
@@ -16,7 +16,7 @@ class TLSession(object):
try:
return self.__transaction._increment_connect()
except AttributeError:
- return TLConnection(self, close_with_result=close_with_result)
+ return TLConnection(self, self.engine.pool.connect(), close_with_result=close_with_result)
def reset(self):
try:
@@ -82,9 +82,8 @@ class TLSession(object):
class TLConnection(base.Connection):
- def __init__(self, session, close_with_result):
- base.Connection.__init__(self, session.engine,
- close_with_result=close_with_result)
+ def __init__(self, session, connection, close_with_result):
+ base.Connection.__init__(self, session.engine, connection, close_with_result=close_with_result)
self.__session = session
self.__opencount = 1
@@ -160,20 +159,6 @@ class TLEngine(base.Engine):
super(TLEngine, self).__init__(*args, **kwargs)
self.context = util.ThreadLocal()
- def raw_connection(self):
- """Return a DB-API connection."""
-
- return self.pool.connect()
-
- def connect(self, **kwargs):
- """Return a Connection that is not thread-locally scoped.
-
- This is the equivalent to calling ``connect()`` on a
- base.Engine.
- """
-
- return base.Connection(self, self.pool.unique_connection())
-
def _session(self):
if not hasattr(self.context, 'session'):
self.context.session = TLSession(self)