[py3] Prepared MySQL backend for Python 3 compatibility

This commit is contained in:
Claude Paroz 2012-08-20 10:46:21 +02:00
parent 3fce0d2a91
commit bfc380baea
2 changed files with 11 additions and 4 deletions

View File

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

View File

@ -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 `([^`]*)` \(`([^`]*)`\)")