在pandas中,没有方便的参数
to_sql可以将非重复项附加到最终表中。考虑使用熊猫 总是
替换的临时临时表,然后运行最终追加查询以将临时表记录迁移到最终表,仅考虑使用该
NOT EXISTS子句的唯一PK 。
engine = sqlalchemy.create_engine(...)df.to_sql(name='myTempTable', con=engine, if_exists='replace')with engine.begin() as cn: sql = """INSERT INTO myFinalTable (Col1, Col2, Col3, ...) SELECT t.Col1, t.Col2, t.Col3, ... FROM myTempTable t WHERe NOT EXISTS (SELECt 1 FROM myFinalTable f WHERe t.MatchColumn1 = f.MatchColumn1 AND t.MatchColumn2 = f.MatchColumn2)""" cn.execute(sql)
这将是ANSI SQL解决方案,并且不限于特定于供应商的方法
UPSERT,因此实际上与所有SQL集成的关系数据库兼容。