python使用engine.begin()连接数据报错:'utf-8' codec can't decode byte 0xd6 in position 61: invalid continuation byte

问题描述:python使用engine.begin()连接数据报错:'utf-8' codec can't decode byte 0xd6 in position 61: invalid continuation byte

问题分析:问题定位到如下位置:

from sqlalchemy import create_engine

...

engine = create_engine(
    f"postgresql://{DB_CONFIG['user']}:{DB_CONFIG['password']}@"
    f"{DB_CONFIG['host']}:{DB_CONFIG['port']}/{DB_CONFIG['database']}?client_encoding=utf8"
)

...

with engine.begin() as conn:
  ...

执行engine.begin()这一行报错,原因是:创建engine的连接字符串出现了错误

解决方案:找到原因后,检查连接字符串,从如下几个方面排查:

  1. 检查host(ip)、port、database(数据库名)、user(用户名)、password(密码),大部分问题出在配置上面,包括大小写字母问题。
  2. 检查数据库的编码格式(utf8)是否一致:SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname = '你的数据库名';
posted @ 2026-07-17 10:49  薄心之心  阅读(15)  评论(0)    收藏  举报