summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/pool.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/pool.py')
-rw-r--r--lib/sqlalchemy/pool.py15
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.