python pandas tosql的时候“Incorrect string value: ‘\\xF0\\x9F\\x99\\x8F‘

今天想把pandas的csv里面的数据导入到数据库中,在导入的过程中有一些特殊字符,最终导致导入失败,错误码为:

"Incorrect string value: '\\xF0\\x9F\\x99\\x8F'

我的代码为:

import pandas as pd
from sqlalchemy import create_engine
import sqlalchemy
import glob

engine = create_engine('mysql+pymysql://username:password@localhost/zhihudemo??charset=utf8')
csv_files=glob.glob('data-science-for-good-careervillage/*.csv')
for csv_name in csv_files:
    try:
        df=pd.read_csv(csv_name)
        table_name=csv_name.split('/')[-1]
        table_name=table_name.split('.')[0]
        df.to_sql(table_name, engine,index=False,if_exists='replace')
    except Exception as e:
        print(csv_name)
        print(e)

结果一些表情等特殊字符死活导入不进去。

解决方法

将对应字符类型换成将对应的数据类型改为utf8mb4类型,同时连接类型也要改成utf8mb4_general_ci

类似于我这样。然后代码改为:

import pandas as pd
from sqlalchemy import create_engine
import sqlalchemy
import glob

engine = create_engine('mysql+pymysql://username:password@localhost/zhihudemo??charset=utf8mb4')
csv_files=glob.glob('data-science-for-good-careervillage/*.csv')
for csv_name in csv_files:
    try:
        df=pd.read_csv(csv_name)
        table_name=csv_name.split('/')[-1]
        table_name=table_name.split('.')[0]
        df.to_sql(table_name, engine,index=False,if_exists='replace')
    except Exception as e:
        print(csv_name)
        print(e)

参考文献

[1].利用pandas的to_sql将数据插入MySQL数据库和所踩过的坑. https://blog.youkuaiyun.com/lzw2016/article/details/84720433

[2].python连接SQL报错:1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x81. https://blog.youkuaiyun.com/diyiday/article/details/80743028

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

农民小飞侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值