Python pandas.to_sql基于“唯一id”将旧数据替换为新数据

Python pandas.to_sql基于“唯一id”将旧数据替换为新数据,python,pandas,sqlalchemy,dataframe,Python,Pandas,Sqlalchemy,Dataframe,我有一个pandas数据框架,我用下面的代码将其放入sql中 代码 样本数据 我的意图是每周运行一次代码,如果唯一id匹配,则用该周的数据替换.dbfile中的数据。如果不匹配,它将附加到.db文件 我该怎么做?还是有更好的方法来执行此任务?似乎没有一个功能可以轻松完成此任务。目前,我只需删除整个表,然后重新创建一个新表 meta = MetaData() table_to_drop = Table('Database count details',

我有一个pandas数据框架,我用下面的代码将其放入sql中

代码

样本数据

我的意图是每周运行一次代码,如果唯一id匹配,则用该周的数据替换.dbfile中的数据。如果不匹配,它将附加到.db文件


我该怎么做?还是有更好的方法来执行此任务?

似乎没有一个功能可以轻松完成此任务。目前,我只需删除整个表,然后重新创建一个新表

meta = MetaData()
table_to_drop = Table('Database count details', 
                       meta, autoload=True, autoload_with=engine)
table_to_drop.drop(engine)

pandas.DataFrame.to_sqldf,name='Database count details',con=engine(如果存在)='replace'


请参见to_sql的if_exists参数,在运行to_sql之前,只需删除冲突行。下面是我如何更新实验结果的

从sqlalchemy导入选择、删除、表格、元数据 元数据=元数据引擎 实验名称='base-20180608' 管道建议=表“管道建议”,元数据,自动加载=真 pipeline\u proposities.delete.wherepipeline\u proposities.c.experience\u name==实验\u name.execute 提议[实验名称]=实验名称 propositions.to_sqlpipeline_propositions,con=engine,如果存在class='append'
这里有一个可能的解决办法。sqlalchemy或pandas中没有任何功能可以轻松做到这一点?注意:如果_存在,则表示表,而不是单行。如果该表存在,它将重新创建整个表。可能应该在单个会话中执行这两个步骤
UNIQUE id   name          refreshed_at    values
2449205     ABC           2014-01-10      22
26019260    DEF           2016-03-04      51
26019261    GHI (1333)    2016-03-04      0.55
meta = MetaData()
table_to_drop = Table('Database count details', 
                       meta, autoload=True, autoload_with=engine)
table_to_drop.drop(engine)