Add some garbage for Django 1.11 compatibility (#327)

Django touched private area of this library.
Removing unused variables broke Django.

While Django 2.0 fixed it, Django 1.11 doesn't fix it
because it is in security-only fix mode.

So add unused variables for Django 1.11 compatibility.
They will be removed in next minor release.

Fix #303, #306
This commit is contained in:
Inada Naoki
2019-02-07 18:05:40 +09:00
committed by GitHub
parent c29d166023
commit 1f6e18d345
2 changed files with 21 additions and 2 deletions

View File

@ -166,6 +166,13 @@ class Connection(_mysql.connection):
self.encoders = dict([ (k, v) for k, v in conv.items()
if type(k) is not int ])
# XXX THIS IS GARBAGE: While this is just a garbage and undocumented,
# Django 1.11 depends on it. And they don't fix it because
# they are in security-only fix mode.
# So keep this garbage for now. This will be removed in 1.5.
# See PyMySQL/mysqlclient-python#306
self.encoders[bytes] = bytes
self._server_version = tuple([ numeric_part(n) for n in self.get_server_info().split('.')[:2] ])
self.encoding = 'ascii' # overridden in set_character_set()
@ -238,8 +245,11 @@ class Connection(_mysql.connection):
s = self.string_literal(o.encode(self.encoding))
elif isinstance(o, bytearray):
s = self._bytes_literal(o)
elif not PY2 and isinstance(o, bytes):
s = self._bytes_literal(o)
elif isinstance(o, bytes):
if PY2:
s = self.string_literal(o)
else:
s = self._bytes_literal(o)
elif isinstance(o, (tuple, list)):
s = self._tuple_literal(o)
else: