gpt4 book ai didi

python - Pandas to_sql() 更新数据库中的唯一值?

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:36 25 4
gpt4 key购买 nike

如何使用 df.to_sql(if_exists = 'append') 仅附加数据框和数据库之间的唯一值。换句话说,我想评估 DF 和 DB 之间的重复项,并在写入数据库之前删除这些重复项。

这个有参数吗?

我知道参数 if_exists = 'append'if_exists = 'replace' 是针对整个表的 - 而不是唯一的条目。

I am using: 
sqlalchemy

pandas dataframe with the following datatypes:
index: datetime.datetime <-- Primary Key
float
float
float
float
integer
string <--- Primary Key
string<---- Primary Key

我坚持这个,所以非常感谢你的帮助。 -谢谢

最佳答案

在 pandas 中,to_sql 中没有方便的参数来仅将非重复项附加到最终表。考虑使用 pandas 总是 替换的暂存临时表,然后运行最终追加查询以使用 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 集成关系数据库。

关于python - Pandas to_sql() 更新数据库中的唯一值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52188446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com