summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/build/changelog/changelog_09.rst12
-rw-r--r--lib/sqlalchemy/dialects/mysql/pymysql.py5
-rw-r--r--test/sql/test_types.py1
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'),