Python 写入mysql 字符串类型报错

1366, "Incorrect string value: '\\xF0\\x9F\\x87\\xA8\\xF0\\x9F...' for column 'nickName' at row 1"

Python 写入mysql 字符串类型报错_第1张图片

问题描述:Python从百度地图抓取消息保存到MySQL数据中,对应数据库字段为varchar以及TEXT,字符编码utf-8。部分插入成功,部分插入失败,报错如下。 

error:1366, “Incorrect string value: ‘\xF0\x9F\x98\x81’

是因为mysql不能识别4个字节的utf8编码的字符,抛出了异常,这应该也是问题的根源。☺、��、类似于这种4个字节,将对应字符类型换成将对应的数据类型改为utf8mb4类型,同时连接类型也要改成utf8mb4_general_ci

Python 写入mysql 字符串类型报错_第2张图片

--如果不管用,可以重启mysql服务

--Python链接写字符集为utf8mb4或者不写

 

conn = pymysql.connect(host="localhost", user="adam",

passwd="XXX",

db=db_name

# ,charset='utf8mb4'

)

 

drop table comments;

 

CREATE TABLE `comments` (

`id` bigint(20) DEFAULT NULL,

`moveId` bigint(20) DEFAULT NULL,

`userId` bigint(20) DEFAULT NULL,

`nickName` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL,

`gender` int(11) DEFAULT NULL,

`score` int(11) DEFAULT NULL,

`content` varchar(2000) CHARACTER SET utf8mb4 DEFAULT NULL,

`cityName` varchar(200) CHARACTER SET utf8mb4 DEFAULT NULL,

`vipType` int(11) DEFAULT NULL,

`startTime` datetime DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

 

 

select * from comments;

你可能感兴趣的:(python,mysql,字符类型,utf8mb4)