From: Mike Bayer Date: Wed, 18 Jan 2006 05:49:01 +0000 (+0000) Subject: dispose() added to pool/engine to allow engines to fall out of scope X-Git-Tag: rel_0_1_0~127 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1c9c5d9e766478f71457be65647478637d37abb2;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git dispose() added to pool/engine to allow engines to fall out of scope --- diff --git a/lib/sqlalchemy/engine.py b/lib/sqlalchemy/engine.py index 65de2f775a..054c5853c7 100644 --- a/lib/sqlalchemy/engine.py +++ b/lib/sqlalchemy/engine.py @@ -183,6 +183,11 @@ class SQLEngine(schema.SchemaEngine): else: self.logger = logger + def dispose(self): + """disposes of the underlying pool manager for this SQLEngine.""" + (cargs, cparams) = self.connect_args() + sqlalchemy.pool.manage(self.dbapi()).dispose(*cargs, **cparams) + def _set_paramstyle(self, style): self._paramstyle = style self._figure_paramstyle(style) diff --git a/lib/sqlalchemy/pool.py b/lib/sqlalchemy/pool.py index 16b4a981fb..699aadb042 100644 --- a/lib/sqlalchemy/pool.py +++ b/lib/sqlalchemy/pool.py @@ -229,6 +229,14 @@ class DBProxy(object): be created, a new database connection will be made.""" return self.get_pool(*args, **params).connect() + def dispose(self, *args, **params): + """disposes the connection pool referenced by the given connect arguments.""" + key = self._serialize(*args, **params) + try: + del self.pools[key] + except KeyError: + pass + def _serialize(self, *args, **params): return cPickle.dumps([args, params])