diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2015-03-22 19:05:22 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2015-03-22 19:25:13 -0400 |
commit | db853306c40437a8ad3dc9f510865820a941c3b5 (patch) | |
tree | d7f28608007ebd54cf19b56e87f9e963c67734d8 | |
parent | ddab2d2351fc79138dcbe650c12f2e153dae4751 (diff) | |
download | sqlalchemy-db853306c40437a8ad3dc9f510865820a941c3b5.tar.gz |
- 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.
fixes #3337
-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'), |