Python 写入mysql 字符串类型报错

    xiaoxiao2022-07-07  161

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

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

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

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

    --如果不管用,可以重启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;

    最新回复(0)