From 3c4ff2176323dd20507e35658599da220fbe1741 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Fri, 9 Feb 2018 16:04:00 +0100 Subject: [PATCH] Fixed #29103 -- Removed bad 'b'-prefix added by MySQL's SchemaEditor.quote_value(). --- django/db/backends/mysql/schema.py | 8 +++++--- tests/backends/mysql/test_schema.py | 1 + tests/schema/test_logging.py | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/django/db/backends/mysql/schema.py b/django/db/backends/mysql/schema.py index 997fef1c0c..f969e6e4d8 100644 --- a/django/db/backends/mysql/schema.py +++ b/django/db/backends/mysql/schema.py @@ -25,9 +25,11 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor): sql_delete_pk = "ALTER TABLE %(table)s DROP PRIMARY KEY" def quote_value(self, value): - # Inner import to allow module to fail to load gracefully - import MySQLdb.converters - return MySQLdb.escape(value, MySQLdb.converters.conversions) + self.connection.ensure_connection() + quoted = self.connection.connection.escape(value, self.connection.connection.encoders) + if isinstance(value, str): + quoted = quoted.decode() + return quoted def _is_limited_data_type(self, field): db_type = field.db_type(self.connection) diff --git a/tests/backends/mysql/test_schema.py b/tests/backends/mysql/test_schema.py index b7c29f1b0d..39a66fdfd7 100644 --- a/tests/backends/mysql/test_schema.py +++ b/tests/backends/mysql/test_schema.py @@ -9,6 +9,7 @@ class SchemaEditorTests(TestCase): def test_quote_value(self): editor = connection.schema_editor() tested_values = [ + ('string', "'string'"), (42, '42'), (1.754, '1.754'), (False, '0'), diff --git a/tests/schema/test_logging.py b/tests/schema/test_logging.py index 8c7313abb1..21e3c9e4a6 100644 --- a/tests/schema/test_logging.py +++ b/tests/schema/test_logging.py @@ -1,9 +1,9 @@ from django.db import connection -from django.test import SimpleTestCase +from django.test import TestCase from django.test.utils import patch_logger -class SchemaLoggerTests(SimpleTestCase): +class SchemaLoggerTests(TestCase): def test_extra_args(self): editor = connection.schema_editor(collect_sql=True)