处理SQLAlchemy中的重复项

时间:2015-06-30 13:16:46

标签: python sql

如果我正在编写数据,我通过SQLAlchemy从Python网上抓取SQL表,并且如果我有一个我正在处理的大型数据集,并希望每天使用新信息更新这些表,我可以处理重复数据吗?遗憾的是,更新似乎不会覆盖之前在表中的数据,而只是添加到表中的现有数据。我应该删除SQL表中的所有数据然后进行更新还是有办法覆盖表中的数据?

修改

表格如下。我手动将数据写入yc_data_sourceyc。我使用包含数据yc_node_histyc_param_histcurve_date以及tenor_years到{{yield_pct的数据框将数据写入param_1param_5 1}}。我有一个更新功能,它将新数据插入到数据框中,具体取决于我从中抓取的网站上是否有新数据,然后将这些数据插入这些表中。

create table yc_data_source
(
    id bigint IDENTITY(1,1) PRIMARY KEY, 
    name varchar(64) NOT NULL, 
    loader_class varchar(32) NOT NULL
)

create table yc
(
    id bigint IDENTITY(1,1) PRIMARY KEY, 
    ccy char(3) NOT NULL, 
    fk_yc_data_source bigint NOT NULL FOREIGN KEY REFERENCES yc_data_source(id),
    primary_fl bit NOT NULL,
    party_id varchar(1024),
    typeofbond char(3) NOT NULL,
    name varchar(1024) NOT NULL,
    parametrized_fl bit NOT NULL,
    model varchar(128)
)

create table yc_update
(
    id bigint IDENTITY(1,1) PRIMARY KEY,
    fk_yc bigint NOT NULL FOREIGN KEY REFERENCES yc(id),
    update_time datetime NOT NULL,
    curve_date_start date,
    curve_date_end date,
    success bit NOT NULL,
    message varchar(4096)
)

create table yc_node_hist
(
    id bigint IDENTITY(1,1) PRIMARY KEY,
    fk_yc_update bigint NOT NULL FOREIGN KEY REFERENCES yc_update(id),
    curve_date date NOT NULL,
    tenor_years float NOT NULL,
    yield_pct float NOT NULL
)

create table yc_param_hist
(
    id bigint IDENTITY(1,1) PRIMARY KEY,
    fk_yc_update bigint NOT NULL FOREIGN KEY REFERENCES yc_update(id),
    curve_date date NOT NULL,
    param_1 float NOT NULL,
    param_2 float,
    param_3 float,
    param_4 float,
    param_5 float,
)

0 个答案:

没有答案