开发者社区> 问答> 正文

pandas to_sql数据框,用于使用sqlalchemy进行替换和添加

我正在尝试在SQL DB中的熊猫数据帧中更新和添加新数据帧。

我有2个查询:一个是在DF中导入所有数据(超过100.000),并使用以下代码将其与sql表进行比较:

df.to_sql(table_name, con=engine, if_exists='replace', index=False)

第二个是相同的导入和查询,只是将特定时间段内的数据导入数据帧并导入同一sql表中。使用的代码是相同的:

df.to_sql(table_name, con=engine, if_exists='replace', index=False)

我的问题是:当我使用第二个代码时,它将删除第二个代码中不存在的sql表中的所有现有数据(部分导入)。

有人可以给我建议吗?

有关信息,数据库位于Azure上

谢谢,新年快乐

展开
收起
祖安文状元 2020-01-03 16:28:27 1283 0
1 条回答
写回答
取消 提交回答
  • 这if_exists='replace'不是明智的操作。所以它并不能检查,如果各行已经存在,并且将只替换特定行。它检查整个表是否已经存在,如果找到表,它将删除旧表并插入新表。

    从文档引用:

    replace:在插入新值之前删除表。

    我认为您应该做的是使用if_exists='append',然后检查重复的行并将其删除。目前,这将是最安全的方法。

    您正在寻找的方法正在atm上运行,并且被称为upsert,这只会插入不会“冲突”的记录,并且您可以优先考虑新记录或旧记录。看GitHub票

    2020-01-03 16:28:34
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
中文:即学即用的Pandas入门与时间序列分析 立即下载
即学即用的Pandas入门与时间序列分析 立即下载
Adopting Dataframes and Parque 立即下载

相关实验场景

更多