pg库报UnicodeDecodeError 'ascii' codec can't decode byte 0xe4 in position 0 ordinal not in range 128

发布时间 2023-08-10 16:28:24作者: 你说夕阳很美

UnicodeDecodeError 'ascii' codec can't decode byte 0xe4 in position 0 ordinal not in range 128

其实就是加个:client_encoding配置

#1、直接使用 psycopg2
def __init__(self, dict_flag=False):
    self.conn = psycopg2.connect(host=PostgresParams().get_host(),
                                 port=PostgresParams().get_port(),
                                 user=PostgresParams().get_user(),
                                 password=PostgresParams().get_password(),
                                 database=PostgresParams().get_database())
    # 防止报 UnicodeDecodeError 错误
    self.conn.set_client_encoding('utf8')

#2、DBUtils连接池
pool = PooledDB(
                creator=psycopg2,  # 使用连接数据库的模块 psycopg2
                maxconnections=6,  # 连接池允许的最大连接数,0 和 None 表示不限制连接数
                mincached=1,  # 初始化时,链接池中至少创建的空闲的链接,0 表示不创建
                maxcached=0,  # 链接池中最多闲置的链接,0 和 None 不限制
                blocking=True,  # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错
                maxusage=None,  # 一个链接最多被重复使用的次数,None 表示无限制
                setsession=[],  # 开始会话前执行的命令列表
                host='',
                port='5432',
                user='',
                password='',
                database='',
                client_encoding='utf-8',
            )