Я пытался экспортировать некоторые данные из базы данных Google Cloud SQL в файл excel, используя Python xlsxwriter, webapp2, appengine в отложенной задаче.UnicodeDecodeError while cursor.fetchall()
Данные, которые должны быть записаны, должны быть получены из базы данных.
Запрос выполняется нормально, но когда я пытаюсь извлечь данные из запроса либо с помощью cursor.fetchall() или итерации курсора он бросает следующее сообщение об ошибке:
UnicodeDecodeError: 'utf8' кодек не может декодировать байт 0x9F в положении 4: неверный старт байта
StackTrace является:
for row in cursor:
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/storage/speckle/python/api/rdbms.py", line 689, in fetchone
self._FetchMoreRows()
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/storage/speckle/python/api/rdbms.py", line 606, in _FetchMoreRows
self._DoExec(request)
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/storage/speckle/python/api/rdbms.py", line 448, in _DoExec
return self._HandleResult(response.result)
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/storage/speckle/python/api/rdbms.py", line 487, in _HandleResult
new_rows = self._GetRows(result)
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/storage/speckle/python/api/rdbms.py", line 532, in _GetRows
tuple_proto.values[value_index]))
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/storage/speckle/python/api/rdbms.py", line 402, in _DecodeVariable
return converter(value)
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/storage/speckle/python/api/converters.py", line 126, in Str2Unicode
return unicode(arg, 'utf-8')
UnicodeDecodeError: 'utf8' codec can't decode byte 0x9f in position 4: invalid start byte
Тот же код работает, если я пытаюсь локально запустить его с помощью MySQLdb вместо rdbms.
В данных может быть проблема с кодировкой, но это должно возникнуть при записи в файл.
Я попытался найти некоторые данные, которые могут быть повреждены, но не смогли найти их.