这两天在用python写DAO轮子,方便之后爬虫的数据存储。
运行环境 Runtime environment
1 2 3
| 操作系统 : Windows10 IDE: JetBrains Pycharm 2018.2.4 x64 Python: 3.6.2
|
症状
尝试在用INSERT INTO进行插入数据的时候,出现了报错。
报错信息:”latin-1’ codec can’t encode character”
这一般是因为编码不一致导致的,部分报错代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13
| try: 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)
|
即可解决这个问题!