繁体   English   中英

在MySQL中插入忽略熊猫数据框

[英]insert ignore pandas dataframe into mysql

我想将整个熊猫数据帧“插入忽略”到mysql中。 有没有一种方法可以在不循环行的情况下进行操作?

在dataframe.to_sql中,我仅看到if_exists'append'选项,但是在重复的唯一键上仍会继续吗?

考虑使用总是被熊猫替换的临时表(具有最终表的确切结构),然后在游标调用中运行INSERT IGNORE

dataframe.to_sql('myTempTable', con, if_exists ='replace')

cur = con.cursor()
cur.execute("INSERT IGNORE INTO myFinalTable SELECT * FROM myTempTable")
con.commit()

在当前版本的pandas (0.20.3)之前,在熊猫中无法执行此操作。

文档中所述, if_exists选项if_exists适用于表(不适用于行)。

if_exists : {‘fail’, ‘replace’, ‘append’}, default ‘fail’

fail :如果存在,则什么也不做。

replace :如果存在 ,则将其删除,重新创建并插入数据。

append :如果存在 ,则插入数据。 如果不存在则创建。

通过循环

一次插入一行将减慢该过程

for x in xrange(data_frame.shape[0]):
    try:
        data_frame.iloc[x:x+1].to_sql(con=sql_engine, name="table_name", if_exists='append')
    except IntegrityError:
        # Your code to handle duplicates
        pass 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM