Панды read_sql UnicodeDecodeError

Я использую pandas для чтения из базы данных Vertica:

pd.read_sql(query, self._conn)

Но это не срабатывает

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 1: invalid continuation byte.

Другие запросы не завершаются ошибкой, поэтому проблема находится в каком-то конкретном столбце этого запроса.

Мне нужны все данные - что мне делать? Я тоже могу вносить изменения в Vertica, но не могу изменять значения таблицы ...

P.S. Вот как я создаю соединение для Vertica:

conn_info = url2vertica(url)
conn_info["read_timeout"] = 2400
conn_info["ssl"] = False
vrt = vertica_python.connect(**conn_info)

person Ladenkov Vladislav    schedule 28.11.2017    source источник
comment
Я думаю, вам нужно передать некоторые параметры кодирования connect функции. Вроде charset='utf8' или что-то в этом роде. Я думаю, он должен соответствовать любой кодировке вашей базы данных, потому что, по-видимому, это не «utf-8».   -  person jeffery_the_wind    schedule 28.11.2017
comment
@jeffery_the_wind, да, первое, что я попробовал сделать - явно поставить utf-16, где-нибудь, но у read_sql нет интерфейса для этого   -  person Ladenkov Vladislav    schedule 28.11.2017


Ответы (1)


Собственно, я пришел к такому решению: использовать isUTF8() в sql-запросе.

Также в здесь, в Проблемы с кодировкой UTF-8, показано, что мы можем игнорировать ошибки с помощью 'unicode_error': 'ignore'.

person Ladenkov Vladislav    schedule 29.11.2017
comment
Проблема возникает из-за кодировки вашего объекта подключения, который, похоже, не поддерживает utf8. 0xe9 относится к букве é ... Должно быть лучшее решение для решения этой проблемы путем включения поддержки utf8. Не слишком уверен, как - person Alexis.Rolland; 22.02.2018