【问题标题】:pandas dataframe to mysql db error database flavor mysql is not supportedpandas 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 或其他软件包,谁能告诉我这里的错误是什么。 提前致谢

【问题讨论】:

    标签: python python-2.7 python-3.x pandas


    【解决方案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”是唯一受支持的选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-06
      • 1970-01-01
      • 2018-02-16
      • 1970-01-01
      • 2017-12-05
      • 2016-06-20
      • 1970-01-01
      • 2021-06-05
      相关资源
      最近更新 更多