python爬数据存到mysql中显示Incorrect string value: ‘\\xE5\\xBF\\xB5\\xE6\\x88\\x90‘ for column ‘**‘ at row 1

最近爬数据存储到mysql中,遇到一个棘手的问题,在中文字段存储的时候总是报错:
在这里插入图片描述
这个问题网上查了是编码的错误,自己也写代码测试了一下,果真如此,只要存储含有中文字段的时候,就会出现报错,而在英文状态下就不会出现这种错误,只恨mysql不是中国先开发的
在这里插入图片描述
下面展示一下我的测试代码:

import pymysql
import MySQLdb

name=["hello","hehe","liwang","念成"]
age=[20,30,50,25]
conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='test', charset="utf8")
cursor = conn.cursor()
for i in range(0,len(name)):
    sql="""insert into table_name(name, age) VALUES ("%s","%d")"""%(name[i],age[i])
    cursor.execute(sql)
    conn.commit()
cursor.close()  # 关闭游标
conn.close()  # 关闭连接数据库

起初我以为是pymysql这个包出现的问题,所以测试一了一下MySQLdb这个包,结果两个都出现同样的问题,当运行脚本的时候,再去查看一下表,除了中文,其他的都可以存进去,通过测试的方法确定了编码的问题:
在这里插入图片描述
修改mysql 的编码其实有很多种,我们可以先进入数据库中,查看数据库的编码:show variables like ‘character_set_%’; 通过这条语句可以查看,在这里插入图片描述
数据库的编码在最初安装的时候默认为latin1,我是在window下面运行的,所以我会选择修改mysql 的配置文件my.ini 文件,因为这种方法可以永久改数据库的编码方式。我们可以从mysql 的安装位置中找到这个文件:在这里插入图片描述
如果你的本地没有这个my.ini文件的话,可以看这篇文章:如何解决安装MySQL后没有 my.ini 本地配置文件
可以选择notepad++打开,在文件的这三个位置加上三行代码
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqld]
character-set-server=utf8
在这里插入图片描述
不过修改了这个之后,下面路径也跟着修改一下,
在这里插入图片描述
一顿操作之后,再去重启mysql服务,结果其他的都可以改成utf8了这两个怎么也不生效,我在这个问题上面整整弄了一天。。。。在这里插入图片描述
后来我发现,不能只修改这里的配置文件,还要去另一个文件夹中修改另一个my.ini文件,上面给的链接中有提到这个文件的位置在哪里,在这里插入图片描述
这个隐藏文件下面我们需要修改mysql下面的my.ini文件,修改的方式跟上面的一样,然后我们再去重启mysql服务:
在这里插入图片描述
然后就可以看到编码已经成功修改了。
在这里插入图片描述
但是已经创建的表编码还是以前的,这个没办法,配置好编码后创建的表,编码方式都是支持中文存储的了,希望对遇到此类问题的小伙伴有所帮助。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值