diff --git a/django/db/backends/mysql/schema.py b/django/db/backends/mysql/schema.py index 997fef1c0ca..f969e6e4d83 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 b7c29f1b0d4..39a66fdfd70 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 8c7313abb14..21e3c9e4a67 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)