【Warning】pandas sqlalchemy报错

第一:报错内容

报错代码:sqlalchemy Warning: (1366, "Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA

第二:怎么出现?

在保存dataframe格式至mysql时,出现报错。

但是,数据仍旧写入mysql,并没有出现什么乱码。

第三:怎么处理?

百度了,说时字符串格式不对导致的,然而,设置了字符集,依旧报错。

第四:一个发现

将mysql的地址换成,服务器上的地址,没有警告。

第五:继续百度,当发现了这篇博客

原文如下,链接在上。

1、pip install mysql-connector

2、驱动改成以上,问题暂时解决

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

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

到此我比较郁闷,遂求助于程序员好友,他看/听完描述,马上就找到了最可疑之处 - MySQL驱动
的确,书中在创建数据库连接时,并没提到相关概念,但我之前再根据
廖雪峰网站学MySQL操作时,是有这个步骤的
然后根据这个思路进行操作

  1. 安装MySQL驱动(我升级过Python,所以要再装一遍)

    本想安装MySQL官方驱动mysql-connector-python的,然而官方目前只支持到3.4
    我又懒,所以就用了另一个驱动mysql-connector,也不知道是谁开发的…… 
  2. 修改代码,把

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:password@localhost/database'

改成

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+mysqlconnector://root:password@localhost/database'

至此,上述1366报错信息消失!

我推测是因为SQLAlchemy使用了默认的数据库驱动(按官方文档,是mysql-python)有问题,才导致此问题
还望看到此文章的大神能验证一下我的说法

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

你可能感兴趣的:(python,mysql)