2014-11-05 87 views
1

我想使用Python的熊貓to_sql命令將每月數據發送到MySQL數據庫。我的程序一次運行一個月的數據,我想將新數據附加到現有的數據庫上。然而,Python的給我一個錯誤:Python pandas to_sql'append'

_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 

更換康恩= MySQLdb.connect ...與:

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

conn = engine.connect().connection 

爲什麼我無法追加到數據庫?

謝謝!

+0

大熊貓哪個版本您使用的? – joris 2014-11-05 20:09:57

+0

您是否嘗試過傳遞'con = engine'而不是'con = conn'? – unutbu 2014-11-05 20:12:36

回答

4

從熊貓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') 
+0

謝謝。 另外@joris謝謝你。我更新了這兩個修復程序之間的熊貓'sudo pip install --upgrade pandas',一切正常。不過,我相信主要的修復方法是更新熊貓,因爲我嘗試了連接到MySQL的組合,但無濟於事。 – 2014-11-05 21:57:13

+0

更新大熊貓很可能解決了您的問題,但我應該注意,不過建議在任何情況下都使用sqlalchemy,因爲直接使用MySQL連接對象已被棄用,並且將在未來的pandas版本中刪除。 – joris 2014-11-05 22:15:39

+0

一旦我更新了熊貓,MySQL連接根本不起作用。 – 2014-11-05 22:17:47