Fixed #29103 -- Removed bad 'b'-prefix added by MySQL's SchemaEditor.quote_value().

This commit is contained in:
Claude Paroz 2018-02-09 16:04:00 +01:00 committed by Tim Graham
parent aa0ee372cd
commit 3c4ff21763
3 changed files with 8 additions and 5 deletions

View File

@ -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)

View File

@ -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'),

View File

@ -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)