这两天在用python写DAO轮子,方便之后爬虫的数据存储。
运行环境 Runtime environment
1 | 操作系统 : Windows10 |
症状
尝试在用INSERT INTO进行插入数据的时候,出现了报错。
报错信息:”latin-1’ codec can’t encode character”
这一般是因为编码不一致导致的,部分报错代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13try:
# 创建连接对象
conn = MySQLdb.connect(
host=connect_dict["host"],
port=connect_dict["port"],
user=connect_dict["user"],
passwd=connect_dict["passwd"],
db=connect_dict["db"],
)
return conn
except Exception as e:
print("FTP登陆失败,请检查主机号、用户名、密码是否正确:%s"%e)
sys.exit(0)
解决办法
由于当初创建数据库时,选择的编码格式为UTF8,所以在用PyMySQL模块实例化连接对象的时候,要加入对编码的声明。
使用XXX.set_character_set(‘utf8’)来处理即可
将其部分修改为:1
2
3
4
5
6
7
8
9
10
11
12
13
14 try:
# 创建连接对象
conn = MySQLdb.connect(
host=connect_dict["host"],
port=connect_dict["port"],
user=connect_dict["user"],
passwd=connect_dict["passwd"],
db=connect_dict["db"],
)
conn.set_character_set('utf8') # 声明编码格式
return conn
except Exception as e:
print("FTP登陆失败,请检查主机号、用户名、密码是否正确:%s"%e)
sys.exit(0)
即可解决这个问题!