【问题标题】:Python pandas to_sql 'append'Python 熊猫 to_sql '追加'
【发布时间】:2015-01-02 03:45:09
【问题描述】:

我正在尝试使用 Python 的 pandas to_sql 命令将每月数据发送到 MySQL 数据库。我的程序一次运行一个月的数据,我想将新数据附加到现有数据库中。但是,Python 给了我一个错误:

_mysql_exceptions.OperationalError: (1050, "Table 'cps_basic_tabulation' already exists")

这是我的连接和导出代码:

conn = MySQLdb.connect(host     = config.get('db', 'host'),
                       user     = config.get('db', 'user'),
                       passwd   = config.get('db', 'password'),
                       db       = 'cps_raw') 

combined.to_sql(name            = "cps_raw.cps_basic_tabulation",
               con              = conn,
               flavor           = 'mysql', 
               if_exists        = 'append')

我也尝试过使用:

from sqlalchemy import create_engine

将 conn = MySQLdb.connect... 替换为:

engine = mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>

conn   = engine.connect().connection

关于为什么我不能追加到数据库的任何想法?

谢谢!

【问题讨论】:

  • 您使用的是哪个版本的熊猫?
  • 您是否尝试过传递con=engine 而不是con=conn

标签: python mysql pandas


【解决方案1】:

从 pandas 0.14 开始,您必须直接提供 sqlalchemy engine,而不是连接对象:

engine = create_engine("mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>")
combined.to_sql("cps_raw.cps_basic_tabulation", engine, if_exists='append')

【讨论】:

  • 谢谢。还有@joris 谢谢。我在这两个修复程序之间更新了 pandas 'sudo pip install --upgrade pandas',一切正常。但是,我相信主要的修复是更新 pandas,因为我尝试了连接到 MySQL 的组合但无济于事。
  • 更新 pandas 很可能解决了您的问题,但我应该注意,无论如何建议使用 sqlalchemy,因为直接使用 MySQL 连接对象已被弃用,并将在未来的熊猫版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-12
  • 2016-07-21
  • 2020-04-21
  • 2021-10-26
相关资源
最近更新 更多