MySQLDB 'utf-8' 编解码器的问题无法解码字节 0x92

Sol*_*lal 3 mysql-python python-3.x

我在使用 MySQLdb 运行查询时遇到问题。我有以下错误消息

': 'utf-8' codec can't decode byte 0x92 in position 2: invalid start byte
Run Code Online (Sandbox Code Playgroud)

过去我已经能够在没有编码问题的情况下运行此查询,因此我不知道我的问题来自哪里。我所做的唯一更改是在我的笔记本电脑上下载 Postgres 并删除(不小心)一个 db.sqlite3 文件。但我不明白为什么这会影响我的查询的编码,特别是因为我没有任何特殊字符。运行更简单的查询可以正常工作,并且从我同事的笔记本电脑运行此查询也可以。

查询如下:

SLEEPERS_QUERY = """
select * from candidates"""
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)

Sol*_*lal 5

我找到了一个解决方案:我的默认编码从 latin1 改为 utf8。

我不得不添加 charset = 'latin1'

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