summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2015-03-22 19:05:22 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2015-03-22 19:25:13 -0400
commitdb853306c40437a8ad3dc9f510865820a941c3b5 (patch)
treed7f28608007ebd54cf19b56e87f9e963c67734d8
parentddab2d2351fc79138dcbe650c12f2e153dae4751 (diff)
downloadsqlalchemy-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.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'),