]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Added workaround for pymysql3 double wrapping ProgrammingErrors to pymysql dialect.
authorBen Trofatter <trofatter@google.com>
Tue, 19 Mar 2013 00:58:41 +0000 (17:58 -0700)
committerBen Trofatter <trofatter@google.com>
Tue, 19 Mar 2013 00:58:41 +0000 (17:58 -0700)
Added workaround for pymysql3 return a bytes object when queried for isolation level.

lib/sqlalchemy/dialects/mysql/base.py
lib/sqlalchemy/dialects/mysql/pymysql.py
test/sql/test_types.py

index 62598ad005336c336478c68859b6815702eba50c..3720c4e6233eace949e16085a4fe5b397425e204 100644 (file)
@@ -1932,6 +1932,11 @@ class MySQLDialect(default.DefaultDialect):
         cursor.execute('SELECT @@tx_isolation')
         val = cursor.fetchone()[0]
         cursor.close()
+        # Py3K
+        #if isinstance(val, bytes):
+        #    val = val.decode()
+        # Py2K
+        # end Py2K
         return val.upper().replace("-", " ")
 
     def do_commit(self, dbapi_connection):
index d70e997f7eccdc4a5b7e42ee1b7837a5ebed192e..25e2dadd3cbfa444c9f570afb1b939d34923e628 100644 (file)
@@ -28,9 +28,21 @@ class MySQLDialect_pymysql(MySQLDialect_mysqldb):
     driver = 'pymysql'
 
     description_encoding = None
+    # Py3K
+    #supports_unicode_statements = True
+    # Py2K
+    # end Py2K
 
     @classmethod
     def dbapi(cls):
         return __import__('pymysql')
 
+    # Py3K
+    #def _extract_error_code(self, exception):
+    #    if isinstance(exception.args[0], Exception):
+    #        exception = exception.args[0]
+    #    return exception.args[0]
+    # Py2K
+    # end Py2K
+
 dialect = MySQLDialect_pymysql
index fac22a205be942201225ba3829365da844d86ffb..4bbfd96e82314866adf6f0305e6b30a148f6bbf2 100644 (file)
@@ -699,6 +699,16 @@ class UnicodeTest(fixtures.TestBase):
                 # end Py2K
             )
 
+        elif testing.against('mysql+pymysql'):
+            eq_(
+                testing.db.dialect.returns_unicode_strings,
+                # Py3K
+                #True
+                # Py2K
+                False
+                # end Py2K
+            )
+
         else:
             expected = (testing.db.name, testing.db.driver) in \
                 (
@@ -709,7 +719,7 @@ class UnicodeTest(fixtures.TestBase):
                     ('mysql', 'oursql'),
                     ('mysql', 'zxjdbc'),
                     ('mysql', 'mysqlconnector'),
-                    ('mysql', 'pymysql'),
+                    #('mysql', 'pymysql'),
                     ('sqlite', 'pysqlite'),
                     ('oracle', 'zxjdbc'),
                     ('oracle', 'cx_oracle'),