]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
ensure sa_pool_key isn't passed to connect
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 21 Sep 2011 14:26:49 +0000 (10:26 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 21 Sep 2011 14:26:49 +0000 (10:26 -0400)
lib/sqlalchemy/pool.py
test/engine/test_pool.py

index 0bca5f599a45442d8a1841bf3f4b69ac18e3d3f0..0645c45b056ca0ee3f88a89691a3bef267114ea9 100644 (file)
@@ -918,6 +918,7 @@ class _DBProxy(object):
             self._create_pool_mutex.acquire()
             try:
                 if key not in self.pools:
+                    kw.pop('sa_pool_key', None)
                     pool = self.poolclass(lambda: 
                                 self.module.connect(*args, **kw), **self.kw)
                     self.pools[key] = pool
index b515de0f88a79094ed1f713d7c0e41a4e523b714..789324445d1493fa68405319d94b22a1de1abac6 100644 (file)
@@ -68,6 +68,21 @@ class PoolTest(PoolTestBase):
         assert c4 is c6
         assert c4 is not c5
 
+    def test_manager_with_key(self):
+        class NoKws(object):
+            def connect(self, arg):
+                return MockConnection()
+
+        manager = pool.manage(NoKws(), use_threadlocal=True)
+
+        c1 = manager.connect('foo.db', sa_pool_key="a")
+        c2 = manager.connect('foo.db', sa_pool_key="b")
+        c3 = manager.connect('bar.db', sa_pool_key="a")
+
+        assert c1.cursor() is not None
+        assert c1 is not c2
+        assert c1 is  c3
+
     def test_bad_args(self):
         manager = pool.manage(MockDBAPI())
         connection = manager.connect(None)