Python 将数据帧插入mysql

Python 将数据帧插入mysql,python,mysql,pandas,pandas-to-sql,Python,Mysql,Pandas,Pandas To Sql,我想在mysql中“插入忽略”整个熊猫数据帧。有没有一种方法可以做到这一点而不在行上循环 在dataframe.to_sql中,我只看到存在“append”时的选项,但在重复的唯一键上仍会继续吗?在当前版本的pandas(0.20.3)之前,pandas中无法执行此操作 选项如果存在仅适用于表(不适用于行),如中所述 失败:如果表存在,则不执行任何操作 替换:如果表存在,请删除它,重新创建它,然后插入数据 追加:如果存在表,则插入数据。如果不存在,则创建 通过循环 这将降低每次插入一行的速度 f

我想在mysql中“插入忽略”整个熊猫数据帧。有没有一种方法可以做到这一点而不在行上循环


在dataframe.to_sql中,我只看到存在“append”时的选项,但在重复的唯一键上仍会继续吗?

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

选项
如果存在
仅适用于表(不适用于行),如中所述

失败
:如果存在,则不执行任何操作

替换
:如果存在,请删除它,重新创建它,然后插入数据

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

通过循环

这将降低每次插入一行的速度

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 

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

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

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

如果您使用的是sqlalchemy,请像这样替换最后3行:
connection=engine.connect()result=connection.execute(“INSERT IGNORE INTO myFinalTable SELECT*FROM mytentable”)connection.close()
dataframe.to_sql('myTempTable', con, if_exists ='replace')

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