我有一个pandas Dataframe,我已将其放入带有以下代码的sql中。
码
df = pandas.read_csv(io.StringIO(r))
pandas.DataFrame.to_sql(df, name='Database count details', con=engine)
示例数据
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
我的意图是每周运行一次代码,如果.db
匹配,则将unique id
文件中的数据替换为该周的数据。如果它不匹配,它将附加到.db
文件。
我该怎么做?或者有更好的方法来执行此任务吗?
答案 0 :(得分:0)
似乎并不是一个容易实现这一目标的功能。目前,我只是删除整个表,并重新创建一个新的表..
meta = MetaData()
table_to_drop = Table('Database count details',
meta, autoload=True, autoload_with=engine)
table_to_drop.drop(engine)
答案 1 :(得分:0)
在运行to_sql
之前,只需删除冲突的行。这是我更新实验结果的方法。
from sqlalchemy import select, delete, Table, MetaData
metadata = MetaData(engine)
experiment_name = 'base-20180608'
pipeline_proposals = Table('pipeline_proposals', metadata, autoload=True)
pipeline_proposals.delete().where(pipeline_proposals.c.experiment_name == experiment_name).execute()
proposals["experiment_name"]=experiment_name
proposals.to_sql("pipeline_proposals", con=engine, if_exists='append')
答案 2 :(得分:-2)
pandas.DataFrame.to_sql(df,name ='数据库计数详情',con =引擎,if_exists ='替换')
请参阅http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_sql.html
处的to_sql的if_exists参数