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" sql_delete_pk = "ALTER TABLE %(table)s DROP PRIMARY KEY"
def quote_value(self, value): def quote_value(self, value):
# Inner import to allow module to fail to load gracefully self.connection.ensure_connection()
import MySQLdb.converters quoted = self.connection.connection.escape(value, self.connection.connection.encoders)
return MySQLdb.escape(value, MySQLdb.converters.conversions) if isinstance(value, str):
quoted = quoted.decode()
return quoted
def _is_limited_data_type(self, field): def _is_limited_data_type(self, field):
db_type = field.db_type(self.connection) db_type = field.db_type(self.connection)

View File

@ -9,6 +9,7 @@ class SchemaEditorTests(TestCase):
def test_quote_value(self): def test_quote_value(self):
editor = connection.schema_editor() editor = connection.schema_editor()
tested_values = [ tested_values = [
('string', "'string'"),
(42, '42'), (42, '42'),
(1.754, '1.754'), (1.754, '1.754'),
(False, '0'), (False, '0'),

View File

@ -1,9 +1,9 @@
from django.db import connection from django.db import connection
from django.test import SimpleTestCase from django.test import TestCase
from django.test.utils import patch_logger from django.test.utils import patch_logger
class SchemaLoggerTests(SimpleTestCase): class SchemaLoggerTests(TestCase):
def test_extra_args(self): def test_extra_args(self):
editor = connection.schema_editor(collect_sql=True) editor = connection.schema_editor(collect_sql=True)