在flask框架的集成shell中,使用SQLALchemy向MySQL导入爬虫爬到的中文文章,出现错误:
InternalError: (pymysql.err.InternalError) (1366, "Incorrect string value:。。。
字符串值不正确,文章编码是utf8,数据库字段编码也是utf8,产生错误的原因是字符编码问题。
在MySQL中utf8编码只支持到3字节,有一些4字节的unicode不能正确处理(比如emoji)
解决步骤:
①修改MySQL的字段编码为utf8mb4,就能处理4字节的unicode
使用MySQL-Front修改:
或者使用SQL语句修改:
ALTER TABLE table_name CHANGE col_name col_name type
CHARACTER SET character_name [COLLATE collation_name];
②在Flask配置中修改连接MySQL的url
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://用户名:密码@主机号:端口号/数据库名?charset=utf8mb4'