diff options
| author | Ben Trofatter <trofatter@google.com> | 2013-03-18 17:58:41 -0700 |
|---|---|---|
| committer | Ben Trofatter <trofatter@google.com> | 2013-03-18 17:58:41 -0700 |
| commit | 68299cbd444d4ba1c837b9407faedb5dc42f9d16 (patch) | |
| tree | d4b2f372f14f12764258e0a1eb515bcd4dd11747 | |
| parent | 9ad9ccec87b89023db611d70da2c6d455c29ab60 (diff) | |
| download | sqlalchemy-68299cbd444d4ba1c837b9407faedb5dc42f9d16.tar.gz | |
Added workaround for pymysql3 double wrapping ProgrammingErrors to pymysql dialect.
Added workaround for pymysql3 return a bytes object when queried for isolation level.
| -rw-r--r-- | lib/sqlalchemy/dialects/mysql/base.py | 5 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/mysql/pymysql.py | 12 | ||||
| -rw-r--r-- | test/sql/test_types.py | 12 |
3 files changed, 28 insertions, 1 deletions
diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py index 62598ad00..3720c4e62 100644 --- a/lib/sqlalchemy/dialects/mysql/base.py +++ b/lib/sqlalchemy/dialects/mysql/base.py @@ -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): diff --git a/lib/sqlalchemy/dialects/mysql/pymysql.py b/lib/sqlalchemy/dialects/mysql/pymysql.py index d70e997f7..25e2dadd3 100644 --- a/lib/sqlalchemy/dialects/mysql/pymysql.py +++ b/lib/sqlalchemy/dialects/mysql/pymysql.py @@ -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 diff --git a/test/sql/test_types.py b/test/sql/test_types.py index fac22a205..4bbfd96e8 100644 --- a/test/sql/test_types.py +++ b/test/sql/test_types.py @@ -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'), |
