【python3】【pymysql】UnicodeEncodeError: 'latin-1' codec can't encode characters in position 118-119: ordinal not in range(256)

深度链接 / 2023-12-06 21:48:31 / 209

python3使用pymysql数据库插入时出现UnicodeEncodeError: 'latin-1' codec can't encode characters in position 118-119: ordinal not in range(256),查询相关资料后得知pymysql是没有指定编码类型。

1、报错内容

INSERT INTO proxy_pool(`ip`,`port`,`protocol`,`method`,`anony`) VALUES("120.199.64.163","8081","HTTP","GET/POST","透明"),("186.46.41.106","3128","HTTP","GET/POST","透明"),("118.151.209.114","9090","HTTP","GET/POST","透明"),("185.82.203.147","1080","HTTP","GET/POST","透明"),("164.132.231.172","3128","HTTP","GET/POST","透明"),("180.210.205.104","3128","HTTP","GET/POST","透明"),("120.77.154.150","8888","HTTP","GET/POST","透明"),("222.94.146.5","808","HTTP","GET/POST","透明"),("62.210.71.225","8080","HTTP","GET/POST","透明"),("36.81.32.147","8080","HTTP","GET/POST","透明"),("111.13.7.123","80","HTTP","GET/POST","透明"),("111.13.7.123","80","HTTP","GET/POST","透明"),("101.53.101.172","9999","HTTP","GET/POST","透明"),("112.74.172.125","8888","HTTP","GET/POST","透明"),("1.82.132.75","8080","HTTP","GET/POST","透明"),("1.82.132.75","8080","HTTP","GET/POST","透明"),("119.40.109.233","8081","HTTP","GET/POST","透明"),("86.120.79.89","3128","HTTP","GET/POST","透明")
Process Process-1:
Traceback (most recent call last):
  File "/var/www/html/python3/proxypool/db.py", line 43, in insertIntoTable
    self.cursor.execute(sql)
  File "/usr/local/lib/python3.5/site-packages/pymysql/cursors.py", line 166, in execute
    result = self._query(query)
  File "/usr/local/lib/python3.5/site-packages/pymysql/cursors.py", line 322, in _query
    conn.query(q)
  File "/usr/local/lib/python3.5/site-packages/pymysql/connections.py", line 854, in query
    sql = sql.encode(self.encoding, 'surrogateescape')
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 118-119: ordinal not in range(256)

2、报错是pymysql连接配置

MYSQL_DB_CONFIG = {
	"host":"localhost",
	"port":3306,
	"user":"root",
	"password":"123456",
	"db":"***"
}

3、修改pymysql连接配置如下

MYSQL_DB_CONFIG = {
	"host":"localhost",
	"port":3306,
	"user":"root",
	"password":"123456",
	"db":"***",
	"use_unicode":True,#增加此条
	"charset":"utf8"#增加此条
}