pandas dataframe to mysql db error database flavor mysql is not supported
Posted
技术标签:
【中文标题】pandas dataframe to mysql db error database flavor mysql is not supported【英文标题】: 【发布时间】:2017-04-12 02:13:08 【问题描述】:我在 pandas 数据框 df 中有一个表格。
product_id_x product_id_y count date
0 288472 288473 1 2016-11-08 04:02:07
1 288473 2933696 1 2016-11-08 04:02:07
2 288473 85694162 1 2016-11-08 04:02:07
我想把这张表保存在mysql数据库中。
我正在使用 MySQLdb 包。
import MySQLdb
conn = MySQLdb.connect(host="xxx.xxx.xx.xx", user="name", passwd="pwd", db="dbname")
df.to_sql(con = conn, name = 'sample_insert', if_exists = 'append', flavor = 'mysql', index = False)
我使用此查询将其放入我的数据库中。
但我遇到了错误。
ValueError: database flavor mysql is not supported
我的数据类型是所有列的 str。
type(df['product_id_x'][0]) = str
type(df['product_id_y'][0]) = str
type(df['count'][0]) = str
type(df['date'][0]) = str
我不想使用 sqlalchemy 或其他软件包,谁能告诉我这里的错误是什么。 提前致谢
【问题讨论】:
【参考方案1】:pandas 0.19 版本不推荐使用“mysql”风格。您必须使用 sqlalchemy 的引擎来创建与数据库的连接。
from sqlalchemy import create_engine
engine = create_engine("mysql+mysqldb://USER:"+'PASSWORD'+"@localhost/DATABASE")
df.to_sql(con=engine, if_exists='append', index=False)
定义引擎时,需要指定用户、密码、主机和数据库。在您的具体情况下,这应该如下所示:
engine = create_engine("mysql+mysqldb://name:pwd@xxx.xxx.xx.xx/dbname")
【讨论】:
to_sql 需要name
的位置参数
pip install MySql-Python
pip install SQLAlchemy
【参考方案2】:
您用于flavor
的选项似乎不再存在。简要看一下文档就证实了这一点:
风味:‘sqlite’,默认无
已弃用:此参数将在未来版本中删除,因为如果未安装 SQLAlchemy,则“sqlite”是唯一受支持的选项。
【讨论】:
以上是关于pandas dataframe to mysql db error database flavor mysql is not supported的主要内容,如果未能解决你的问题,请参考以下文章
使用 pandas.DataFrame.to_csv() 按列输出不同的精度?
`pandas.DataFrame.to_html()` 没有 `table border` 和 `tr style`
6 ways to Sort Pandas Dataframe: Pandas Tutorial
pandas.DataFrame.to_sql - 源 csv 文件和目标表的列顺序
pandas:dataframe to_csv,如何设置列名
Python, pandas: how to sort dataframe by index// Merge two dataframes by index