sqlite database connection: use PoolEvent instead of deprecated PoolListener
authorSofia Papagiannaki <papagian@gmail.com>
Thu, 22 Sep 2011 09:52:12 +0000 (12:52 +0300)
committerSofia Papagiannaki <papagian@gmail.com>
Thu, 22 Sep 2011 09:52:12 +0000 (12:52 +0300)
pithos/backends/lib/sqlalchemy/dbwrapper.py

index 1958f7c..7b22e61 100644 (file)
 # interpreted as representing official policies, either expressed
 # or implied, of GRNET S.A.
 
-from sqlalchemy import create_engine
+from sqlalchemy import create_engine, event
 from sqlalchemy.pool import NullPool
-from sqlalchemy.interfaces import PoolListener
 
 class DBWrapper(object):
     """Database connection wrapper."""
     
     def __init__(self, db):
         if db.startswith('sqlite://'):
-            class ForeignKeysListener(PoolListener):
-                def connect(self, dbapi_con, con_record):
-                    db_cursor = dbapi_con.execute('pragma foreign_keys=ON')
-            self.engine = create_engine(db, connect_args={'check_same_thread': False}, poolclass=NullPool, listeners=[ForeignKeysListener()])
+            def my_on_connect(dbapi_conn, connection_rec, connection_proxy):
+                db_cursor = dbapi_conn.execute('pragma foreign_keys=ON')
+            self.engine = create_engine(db, connect_args={'check_same_thread': False}, poolclass=NullPool)
+            event.listen(self.engine, 'checkout', my_on_connect)
         else:
             self.engine = create_engine(db)
         #self.engine.echo = True