summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Trofatter <trofatter@google.com>2013-03-18 17:58:41 -0700
committerBen Trofatter <trofatter@google.com>2013-03-18 17:58:41 -0700
commit68299cbd444d4ba1c837b9407faedb5dc42f9d16 (patch)
treed4b2f372f14f12764258e0a1eb515bcd4dd11747
parent9ad9ccec87b89023db611d70da2c6d455c29ab60 (diff)
downloadsqlalchemy-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.py5
-rw-r--r--lib/sqlalchemy/dialects/mysql/pymysql.py12
-rw-r--r--test/sql/test_types.py12
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'),