Проблема с кодом MySQLDB 'utf-8' c Не удается декодировать байт 0x92 - PullRequest
3 голосов
/ 25 февраля 2020

У меня проблема с запуском запроса с использованием MySQLdb. У меня появляется следующее сообщение об ошибке

': 'utf-8' codec can't decode byte 0x92 in position 2: invalid start byte

В прошлом мне удавалось выполнить этот запрос без кодирования, и поэтому я не понимаю, откуда возникла моя проблема. Единственное изменение, которое я сделал - это загрузил Postgres на свой ноутбук и удалил (случайно) файл db.sqlite3. Но я не понимаю, почему это повлияет на кодировку моего запроса, тем более что у меня нет специальных символов. Выполнение более простого запроса работает нормально, и выполнение этого запроса с моего коллегного ноутбука также работает.

Запрос выглядит следующим образом:

SLEEPERS_QUERY = """
select * from candidates"""
import MySQLdb as db


with SSHTunnelForwarder(
    ssh_address_or_host = host,
    ssh_port = 22,
    ssh_username = ssh_username,
    ssh_pkey = ssh_private_key,
    remote_bind_address = (rds, 3306), # 3306 = mysql port
) as server:
    server.start()
    print('Connected to the SSH server')

    while True:
        try:
            conn = db.connect(
                host = localhost,
                port = server.local_bind_port,
                user = user,
                passwd = password,
                db = database
            )
            print('Connected to the database server')
            break

        except: pass
    df = pd.read_sql_query(query,conn)

return df

1 Ответ

4 голосов
/ 27 февраля 2020

Я нашел решение: моя кодировка по умолчанию изменилась с latin1 на utf8.

Я должен был добавить charset = 'latin1'

conn = db.connect(
            host = localhost,
            port = server.local_bind_port,
            user = user,
            passwd = password,
            db = database,
            charset = 'latin1'
            )
...