VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 10
声望: 1

我是利用
atabase_manager.save_bar_data(data) 存储 从交易所 获取的bar 的历史 来存储到数据库里的 删除最后的一个bar 避免存储交易所还在完成中的bar

发现调用后它不管是否之前存在 它都会吧拿到的全部存储
怎么避免重复存储 调用了 atabase_manager.save_bar_data(data) 几次后 如下图就存储了几次

description

代码
self.class_bar.save_all(ds)
后跟踪到
DbBarData.insert_many(
c).on_conflict_replace().execute() 里面
后面的就完全看不怎么懂了

问下 怎么避免存储重复存储

想从数据库里 去限制
CREATE TABLE dbbardata (
id int(11) NOT NULL,
symbol varchar(10) NOT NULL DEFAULT '',
exchange varchar(10) NOT NULL DEFAULT '',
datetime datetime NOT NULL,
interval varchar(10) NOT NULL DEFAULT '',
volume float DEFAULT NULL,
open_interest float DEFAULT NULL,
open_price float DEFAULT NULL,
high_price float DEFAULT NULL,
low_price float DEFAULT NULL,
close_price float DEFAULT NULL,
PRIMARY KEY (symbol,exchange,datetime)
) ENGINE=MyISAM AUTO_INCREMENT=19001 DEFAULT CHARSET=utf8;

达到了 symbol,exchange,datetime 几个组合唯一性 但是又失去了id 的自增
求大神帮解决

Administrator
avatar
加入于:
帖子: 4500
声望: 320

数据库这块的问题挺复杂的,请看看peewee的官方文档吧

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】