diff options
Diffstat (limited to 'lib/sqlalchemy/pool.py')
| -rw-r--r-- | lib/sqlalchemy/pool.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/sqlalchemy/pool.py b/lib/sqlalchemy/pool.py index 787fd059f..8d559aff5 100644 --- a/lib/sqlalchemy/pool.py +++ b/lib/sqlalchemy/pool.py @@ -237,7 +237,9 @@ class _ConnectionFairy(object): raise if self.__pool.echo: self.__pool.log("Connection %s checked out from pool" % repr(self.connection)) - + + _logger = property(lambda self: self.__pool.logger) + def invalidate(self): if self.connection is None: raise exceptions.InvalidRequestError("This connection is closed") @@ -248,7 +250,8 @@ class _ConnectionFairy(object): def cursor(self, *args, **kwargs): try: - return _CursorFairy(self, self.connection.cursor(*args, **kwargs)) + c = self.connection.cursor(*args, **kwargs) + return _CursorFairy(self, c) except Exception, e: self.invalidate() raise @@ -307,11 +310,14 @@ class _CursorFairy(object): def invalidate(self): self.__parent.invalidate() - + def close(self): if self in self.__parent._cursors: del self.__parent._cursors[self] - self.cursor.close() + try: + self.cursor.close() + except Exception, e: + self.__parent._logger.warn("Error closing cursor: " + str(e)) def __getattr__(self, key): return getattr(self.cursor, key) |
