报错处理:Python操作Mysql数据库插入中文错误

本文介绍了解决MySQL数据库中因表和列编码不一致导致的中文字符插入失败的问题。通过逐步调整数据库、表及列的编码格式,最终实现UTF8中文数据的正确存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习《python网络爬虫从入门到实践》中遇到以下错误:

Incorrect string value: '\xE7\xA8\x8B\xE5\xBA\x8F...' for column 'course' at row 1

出现这个错误的原因是,数据库的编码格式为latin1 而我要将utf8的中文插入到数据库中。

一开始修改  修改数据库的编码

alter table score default character set utf8;

但是插入中文依然出现错误。(注意运行上一行代码前先通过运行use scraping打开database,然后将上一行代码中的table score修改为table urls

 

然后通过查看数据表编码(table score修改为table urls)

 

show create table score;

发现如下所示

注意  course 的编码仍然为 latin1 ,虽然此时表的编码已经是 utf8 , 但是不知道为什么 列的编码没有更改过来

下面就是更改列的编码即可(修改为alter table urls change content content varchar(4000) character set utf8;)

 

 alter table score change score score varchar(50) character utf8;


修改成功之后

结果是列的编码已经修改成功

 

接下来插入utf8中文就没有问题了

 

参考:https://blog.youkuaiyun.com/ch717828/article/details/41357431

### Python 连接 MySQL 数据库常见错误及解决方案 #### 错误 1: 认证失败 当尝试连接到 MySQL 数据库时,可能会遇到如下错误: `sqlalchemy.exc.ProgrammingError: (mysql.connector.errors.ProgrammingError) 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)`[^2] 此错误通常表示用户名或密码不匹配。建议检查数据库用户的权限设置以及提供的登录凭证是否正确。 #### 解决方案: - 验证所提供的用户名和密码无误。 - 使用具有适当权限的账户进行测试。 - 如果使用 root 用户,请考虑创建一个新的专用应用程序用户并授予必要的权限。 #### 错误 2: 缺少 `cryptography` 包依赖项 对于采用 SHA-256 或缓存 SHA-2 密码验证方式的情况,如果缺少相应的加密包,则会抛出运行时异常: `RuntimeError: ‘cryptography’ package is required for sha256_password or caching_sha2_password auth methods`[^3] 这表明为了支持更安全的身份验证机制,必须安装额外的安全组件。 #### 解决方案: 可以通过 pip 安装所需的模块来解决问题: ```bash pip install cryptography ``` #### 错误 3: Emoji 表情存储问题 在处理包含 emoji 字符的数据时,如果没有适当地配置字符编码,将会引发插入操作失败的问题: 此时应调整 MySQL 的默认字符集为 `utf8mb4`,以便能够正确处理四字节 Unicode 字符(如 emoji)[^4]。 #### 修改方法: 编辑 MySQL 配置文件 `/etc/my.cnf` 并添加以下内容: ```ini [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci ``` 重启服务使更改生效;或者通过编程接口发送命令设定当前会话使用的字符集: ```python import mysql.connector conn = mysql.connector.connect( host="localhost", user="yourusername", passwd="yourpassword" ) cursor = conn.cursor() cursor.execute('SET NAMES utf8mb4') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值