mirror of https://github.com/django/django.git
[py3] Prepared MySQL backend for Python 3 compatibility
This commit is contained in:
parent
3fce0d2a91
commit
bfc380baea
|
@ -1,10 +1,16 @@
|
||||||
|
try:
|
||||||
|
from itertools import zip_longest
|
||||||
|
except ImportError:
|
||||||
|
from itertools import izip_longest as zip_longest
|
||||||
|
|
||||||
from django.db.models.sql import compiler
|
from django.db.models.sql import compiler
|
||||||
|
|
||||||
|
|
||||||
class SQLCompiler(compiler.SQLCompiler):
|
class SQLCompiler(compiler.SQLCompiler):
|
||||||
def resolve_columns(self, row, fields=()):
|
def resolve_columns(self, row, fields=()):
|
||||||
values = []
|
values = []
|
||||||
index_extra_select = len(self.query.extra_select)
|
index_extra_select = len(self.query.extra_select)
|
||||||
for value, field in map(None, row[index_extra_select:], fields):
|
for value, field in zip_longest(row[index_extra_select:], fields):
|
||||||
if (field and field.get_internal_type() in ("BooleanField", "NullBooleanField") and
|
if (field and field.get_internal_type() in ("BooleanField", "NullBooleanField") and
|
||||||
value in (0, 1)):
|
value in (0, 1)):
|
||||||
value = bool(value)
|
value = bool(value)
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
|
import re
|
||||||
|
from .base import FIELD_TYPE
|
||||||
|
|
||||||
from django.db.backends import BaseDatabaseIntrospection
|
from django.db.backends import BaseDatabaseIntrospection
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
from MySQLdb import ProgrammingError, OperationalError
|
|
||||||
from MySQLdb.constants import FIELD_TYPE
|
|
||||||
import re
|
|
||||||
|
|
||||||
foreign_key_re = re.compile(r"\sCONSTRAINT `[^`]*` FOREIGN KEY \(`([^`]*)`\) REFERENCES `([^`]*)` \(`([^`]*)`\)")
|
foreign_key_re = re.compile(r"\sCONSTRAINT `[^`]*` FOREIGN KEY \(`([^`]*)`\) REFERENCES `([^`]*)` \(`([^`]*)`\)")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue