PostgreSQL&Pandas DF:是否可以使用不影响其他条目的DF更新PostgreSQL数据库的数据选择?

时间:2019-05-27 08:23:15

标签: python pandas postgresql sqlalchemy

我有一个PostgreSQL数据库,可以在Python中使用SQLAlchemy与之交互。

该数据库包含从2005年1月开始的每日价格数据(包括非工作日); date列是此数据库的索引。可以在宣布证券的收盘价后的5天之内重新发布数据,因此,每天,我会在每个数据证券的数据框中捕获5天的收盘价滚动窗口,以覆盖相应的数据在数据库中。

为此,我使用以下功能:

    def update_from_df(self): 
        con = self._engine.connect()
        self._df.to_sql(self._table_name,con,if_exists="replace")
        con.close()

上面的函数删除数据库中存在的所有数据(即没有对应索引作为数据帧数据的数据),并将其替换为DF中包含的更小的数据集。这是不希望的-我只想覆盖与DF中包含相同日期和价格行情记录的数据。

为解决这个问题,我编写了代码,查看数据框的日期范围(包含更新的数据),删除数据库中与该日期范围相对应的行,从数据框中复制数据块,最后将此数据附加到数据库。这个过程有点笨拙,我担心如果选择更大的数据量,性能将会受到阻碍。

replaceinsert的替代方案没有在代码中使用append,对于解决此问题没有帮助。

是否存在使用仅具有相应索引的数据框数据更新PostgreSQL数据库,而不接触其他所有数据库数据的功能?

0 个答案:

没有答案