From e78ce1f8cbee387f93822064d927c91f440f5810 Mon Sep 17 00:00:00 2001 From: INADA Naoki Date: Mon, 5 Jan 2015 14:41:51 +0900 Subject: [PATCH] Fix some BLOBs without binary flag is not decoded. Fixes #15 --- MySQLdb/converters.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/MySQLdb/converters.py b/MySQLdb/converters.py index 9937e25..b3c6ec8 100644 --- a/MySQLdb/converters.py +++ b/MySQLdb/converters.py @@ -17,7 +17,7 @@ Key: Python type object (from types) or class Conversion function: - Arguments: Python object of indicated type or class AND + Arguments: Python object of indicated type or class AND conversion dictionary Returns: SQL literal value @@ -58,7 +58,7 @@ def Str2Set(s): def Set2Str(s, d): return string_literal(','.join(s), d) - + def Thing2Str(s, d): """Convert something into a string via str().""" return str(s) @@ -74,7 +74,7 @@ def Float2Str(o, d): def None2NULL(o, d): """Convert None to NULL.""" - return NULL # duh + return NULL # duh def Thing2Literal(o, d): """Convert something into a SQL string literal. If using @@ -93,6 +93,9 @@ def array2Str(o, d): def quote_tuple(t, d): return "(%s)" % (','.join(escape_sequence(t, d))) +# bytes or str regarding to BINARY_FLAG. +_bytes_or_str = [(FLAG.BINARY, bytes)] + conversions = { int: Thing2Str, long: Thing2Str, @@ -123,19 +126,16 @@ conversions = { FIELD_TYPE.DATETIME: DateTime_or_None, FIELD_TYPE.TIME: TimeDelta_or_None, FIELD_TYPE.DATE: Date_or_None, - FIELD_TYPE.BLOB: [ - (FLAG.BINARY, bytes), - ], - FIELD_TYPE.STRING: [ - (FLAG.BINARY, bytes), - ], - FIELD_TYPE.VAR_STRING: [ - (FLAG.BINARY, bytes), - ], - FIELD_TYPE.VARCHAR: [ - (FLAG.BINARY, bytes), - ], - } + + FIELD_TYPE.TINY_BLOB: _bytes_or_str, + FIELD_TYPE.MEDIUM_BLOB: _bytes_or_str, + FIELD_TYPE.LONG_BLOB: _bytes_or_str, + FIELD_TYPE.BLOB: _bytes_or_str, + FIELD_TYPE.STRING: _bytes_or_str, + FIELD_TYPE.VAR_STRING: _bytes_or_str, + FIELD_TYPE.VARCHAR: _bytes_or_str, +} + if PY2: conversions[unicode] = Unicode2Str else: