Python pandas to_sql'追加'

时间:2014-11-05 19:52:59

标签: python mysql pandas

我正在尝试使用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

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

谢谢!

1 个答案:

答案 0 :(得分:4)

从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')