【warning】 pandas 写入MySQL错误

背景:pandas 利用sqlalchemy 存入数据到mysql

           数据,有中文字符;

//针对linux

第一:错误码

(pymysql.err.InternalError) (1366, "Incorrect string value: '\\xE6\\xB8\\xB8\\xE6\\x88\\x8F

第二:错误原因

字符编码不同造成,写入的是utf8mb4;mysql的字符编码是utf8

第三:如何解决?

engine=sqlalchemy.create_engine('mysql+mysqlconnector://{name}:{password}@{host}:3306/{databasse}?charset=utf8mb4'.format
                                (name=mysql_name,password=mysql_password,host=mysql_host,databasse=mysql_database))

创建engine,追加,设置?charset=utf8mb4,然并卵。

第四:最终解决

1、mysql中,设置对应的数据框的字符串格式

alter database python_yuny character set utf8mb4;

2、重启mysql服务【退出myql后执行的命令】

systemctl restart mysqld

 

 

/针对windows/

第一:engine的语句不添加?charset=utf8mb4

engine=sqlalchemy.create_engine('mysql+mysqlconnector://{name}:{password}@{host}:3306/{databasse}'.format
                                (name=mysql_name,password=mysql_password,host=mysql_host,databasse=mysql_database))

出现的错误:sqlalchemy.exc.OperationalError: (mysql.connector.errors.OperationalError) 2055: Lost connection to MySQL server at '127.0.0.1:3306', system error: 10054 远程主机强迫关闭了一个现有的连接。

第二:engine的语句添加?charset=utf8mb4

出现的错误:LookupError: unknown encoding: utf8mb4

什么意思:意思windows下,mysqlconnector驱动,不支持utf8mb4【linux下则支持】

第三:怎么解决?更换驱动pymysql

engine=sqlalchemy.create_engine('mysql+pymysql://{name}:{password}@{host}:3306/{databasse}?charset=utf8mb4'.format
                                (name=mysql_name,password=mysql_password,host=mysql_host,databasse=mysql_database))

这个,又回到前面一篇博客的错误代码

Warning: (1366, "Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...' for column 'VARIABLE_VALUE' at row 484")
  result = self._query(query)

 

最后总结:字符串问题,如果mysql部署在Linux下,则可以解决;如果mysql部署在windows下,则依然会报错,只不过没啥影响,原因在pymysql的驱动存在问题。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用pandas将数据写入MySQL数据库的方法是使用pd.to_sql()函数。首先,你需要建立与MySQL数据库的连接,可以使用pymysql库或者SQLAlchemy库来实现。然后,你需要创建一个DataFrame对象,将要写入数据库的数据存储在DataFrame中。最后,使用df.to_sql()函数将DataFrame中的数据写入MySQL数据库中。在函数中,你需要指定表名、连接对象、写入方式等参数。具体的代码如下所示: ```python import pandas as pd import pymysql from sqlalchemy import create_engine # 建立与MySQL数据库的连接 con = create_engine('mysql+pymysql://用户名:密码@主机名:端口号/数据库名?charset=utf8') # 创建要写入数据库的数据 lis = \[ {"datetime": 20190516, "type": 1, "count": 869}, {"datetime": 20190517, "type": 1, "count": 869}, \] df = pd.DataFrame(lis) # 将数据写入MySQL数据库 df.to_sql("表名", con, if_exists='append', index=False) ``` 在上述代码中,你需要将用户名、密码、主机名、端口号、数据库名和表名替换为你自己的信息。这样,你就可以使用pandas将数据写入MySQL数据库了。\[1\]\[2\] #### 引用[.reference_title] - *1* *3* [pandas读取和写入MySQL](https://blog.csdn.net/weixin_71142140/article/details/126215999)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [pandas把数据存入mysql](https://blog.csdn.net/ywdhzxf/article/details/90173741)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值