diff options
| -rw-r--r-- | doc/build/changelog/changelog_09.rst | 12 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/mysql/pymysql.py | 5 | ||||
| -rw-r--r-- | test/sql/test_types.py | 1 |
3 files changed, 18 insertions, 0 deletions
diff --git a/doc/build/changelog/changelog_09.rst b/doc/build/changelog/changelog_09.rst index 3c38de454..53c4eeaaa 100644 --- a/doc/build/changelog/changelog_09.rst +++ b/doc/build/changelog/changelog_09.rst @@ -15,6 +15,18 @@ :version: 0.9.10 .. change:: + :tags: bug, mysql, pymysql + :tickets: 3337 + :versions: 1.0.0b4 + + Fixed unicode support for PyMySQL when using an "executemany" + operation with unicode parameters. SQLAlchemy now passes both + the statement as well as the bound parameters as unicode + objects, as PyMySQL generally uses string interpolation + internally to produce the final statement, and in the case of + executemany does the "encode" step only on the final statement. + + .. change:: :tags: bug, py3k, mysql :tickets: 3333 :pullreq: github:158 diff --git a/lib/sqlalchemy/dialects/mysql/pymysql.py b/lib/sqlalchemy/dialects/mysql/pymysql.py index 92aaf89af..87159b561 100644 --- a/lib/sqlalchemy/dialects/mysql/pymysql.py +++ b/lib/sqlalchemy/dialects/mysql/pymysql.py @@ -37,7 +37,12 @@ class MySQLDialect_pymysql(MySQLDialect_mysqldb): driver = 'pymysql' description_encoding = None + + # generally, these two values should be both True + # or both False. PyMySQL unicode tests pass all the way back + # to 0.4 either way. See [ticket:3337] supports_unicode_statements = True + supports_unicode_binds = True @classmethod def dbapi(cls): diff --git a/test/sql/test_types.py b/test/sql/test_types.py index 8b353c049..1fac13b05 100644 --- a/test/sql/test_types.py +++ b/test/sql/test_types.py @@ -972,6 +972,7 @@ class UnicodeTest(fixtures.TestBase): ('postgresql', 'pypostgresql'), ('postgresql', 'pg8000'), ('postgresql', 'zxjdbc'), + ('mysql', 'pymysql'), ('mysql', 'oursql'), ('mysql', 'zxjdbc'), ('mysql', 'mysqlconnector'), |
