diff options
Diffstat (limited to 'lib/sqlalchemy/pool.py')
-rw-r--r-- | lib/sqlalchemy/pool.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/sqlalchemy/pool.py b/lib/sqlalchemy/pool.py index 94d9127f0..e22d1d8d3 100644 --- a/lib/sqlalchemy/pool.py +++ b/lib/sqlalchemy/pool.py @@ -58,6 +58,21 @@ def clear_managers(): manager.close() proxies.clear() +def connection_cache_decorator(func): + """apply caching to the return value of a function, using + the 'info' collection on its given connection.""" + + name = func.__name__ + + def do_with_cache(self, connection): + try: + return connection.info[name] + except KeyError: + value = func(self, connection) + connection.info[name] = value + return value + return do_with_cache + class Pool(object): """Base class for connection pools. |