Update SQLAlchemy backend with metadata domains.
[pithos] / pithos / backends / lib / sqlalchemy / dbwrapper.py
index 4091a88..0c98bae 100644 (file)
@@ -37,6 +37,7 @@ from sqlalchemy.engine import Engine
 from sqlalchemy.pool import NullPool
 from sqlalchemy.interfaces import PoolListener
 
+
 class DBWrapper(object):
     """Database connection wrapper."""
     
@@ -44,14 +45,21 @@ class DBWrapper(object):
         if db.startswith('sqlite://'):
             class ForeignKeysListener(PoolListener):
                 def connect(self, dbapi_con, con_record):
-                    db_cursor = dbapi_con.execute('pragma foreign_keys=ON')
+                    db_cursor = dbapi_con.execute('pragma foreign_keys=ON;')
+                    db_cursor = dbapi_con.execute('pragma case_sensitive_like=ON;')
             self.engine = create_engine(db, connect_args={'check_same_thread': False}, poolclass=NullPool, listeners=[ForeignKeysListener()])
+        elif db.startswith('mysql://'):
+            db = '%s?charset=utf8&use_unicode=0' %db
+            self.engine = create_engine(db, convert_unicode=True)
         else:
             self.engine = create_engine(db)
         #self.engine.echo = True
         self.conn = self.engine.connect()
         self.trans = None
     
+    def close(self):
+        self.conn.close()
+    
     def execute(self):
         self.trans = self.conn.begin()