Use db.unicode_literal.charset in cursors.py

This commit is contained in:
Evax Software
2012-10-08 19:15:52 +02:00
parent 9eb906e8a7
commit 030d175754

View File

@ -47,9 +47,6 @@ from _mysql_exceptions import Warning, Error, InterfaceError, DataError, \
NotSupportedError, ProgrammingError NotSupportedError, ProgrammingError
def normalize_utf8mb4(charset):
return 'utf8' if charset == 'utf8mb4' else charset
class BaseCursor(object): class BaseCursor(object):
"""A base for Cursor classes. Useful attributes: """A base for Cursor classes. Useful attributes:
@ -180,9 +177,8 @@ class BaseCursor(object):
""" """
del self.messages[:] del self.messages[:]
db = self._get_db() db = self._get_db()
charset = normalize_utf8mb4(db.character_set_name())
if isinstance(query, unicode): if isinstance(query, unicode):
query = query.encode(charset) query = query.encode(db.unicode_literal.charset)
if args is not None: if args is not None:
query = query % db.literal(args) query = query % db.literal(args)
try: try:
@ -228,8 +224,8 @@ class BaseCursor(object):
del self.messages[:] del self.messages[:]
db = self._get_db() db = self._get_db()
if not args: return if not args: return
charset = normalize_utf8mb4(db.character_set_name()) if isinstance(query, unicode):
if isinstance(query, unicode): query = query.encode(charset) query = query.encode(db.unicode_literal.charset)
m = insert_values.search(query) m = insert_values.search(query)
if not m: if not m:
r = 0 r = 0
@ -288,12 +284,11 @@ class BaseCursor(object):
""" """
db = self._get_db() db = self._get_db()
charset = db.character_set_name()
for index, arg in enumerate(args): for index, arg in enumerate(args):
q = "SET @_%s_%d=%s" % (procname, index, q = "SET @_%s_%d=%s" % (procname, index,
db.literal(arg)) db.literal(arg))
if isinstance(q, unicode): if isinstance(q, unicode):
q = q.encode(charset) q = q.encode(db.unicode_literal.charset)
self._query(q) self._query(q)
self.nextset() self.nextset()
@ -301,7 +296,7 @@ class BaseCursor(object):
','.join(['@_%s_%d' % (procname, i) ','.join(['@_%s_%d' % (procname, i)
for i in range(len(args))])) for i in range(len(args))]))
if type(q) is UnicodeType: if type(q) is UnicodeType:
q = q.encode(charset) q = q.encode(db.unicode_literal.charset)
self._query(q) self._query(q)
self._executed = q self._executed = q
if not self._defer_warnings: self._warning_check() if not self._defer_warnings: self._warning_check()