sql_db: Better exceptions.
authorP. Christeas <p_christ@hol.gr>
Tue, 23 Nov 2010 13:58:37 +0000 (15:58 +0200)
committerP. Christeas <p_christ@hol.gr>
Tue, 23 Nov 2010 13:58:37 +0000 (15:58 +0200)
A closed cursor should behave the same as a closed connection, ie.
OperationalError. Also instrument a function we don't expect to be called.

bzr revid: p_christ@hol.gr-20101123135837-vkn3ph0e4bz9urf0

bin/sql_db.py

index cdc3d0d..89f5cb0 100644 (file)
@@ -28,6 +28,7 @@ from psycopg2.psycopg1 import cursor as psycopg1cursor
 from psycopg2.pool import PoolError
 
 import psycopg2.extensions
+import warnings
 
 psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
 
@@ -71,7 +72,7 @@ class Cursor(object):
         @wraps(f)
         def wrapper(self, *args, **kwargs):
             if self.__closed:
-                raise psycopg2.ProgrammingError('Unable to use the cursor after having closed it')
+                raise psycopg2.OperationalError('Unable to use the cursor after having closed it')
             return f(self, *args, **kwargs)
         return wrapper
 
@@ -337,10 +338,12 @@ class Connection(object):
     def __nonzero__(self):
         """Check if connection is possible"""
         try:
+            warnings.warn("You use an expensive function to test a connection.",
+                      DeprecationWarning, stacklevel=1)
             cr = self.cursor()
             cr.close()
             return True
-        except:
+        except Exception:
             return False