时间:2023-01-22 11:44:35 | 栏目:Python代码 | 点击:次
前面已经讲了很多次要进行数据存储,终于在上一篇中完成了数据库的设计,在这一篇就开始数据的存储操作,在数据存储的这个部分,会将之前抓取到的基金列表,基金基本信息和基金变动信息以及ETF信息进行存储。
在这里获取基金信息包括两个部分,一部分是场外基金另外一部分是场外基金信息。之在前的文章中,我们已经获完成了场外基金和ETF基金信息的代码,因此在这里我们仅仅需要存储数据库即可,那么有个问题,基金的信息是随时发生变更的或者更新的。在保存时需要先判断基金代码是否已经存在,如果存在则更新,如果不存在则新增,但是这样效率有点低,这时候就用到之前的文章内容,使用这样 on duplicate key update
的语句就可以一条sql搞定了。
举例如下所示:
INSERT INTO `tb_fund_list`(`code`, `name`, `fund_type`) VALUES ('000363','国泰聚信价值优势混合C','混合型-灵活') on duplicate key update `code` = '000363', `name` = '国泰聚信价值优势混合C' ,`fund_type` = '混合型-灵活';
如果存在000363基金的话,我们就进行更新操作,如果不存在那么久插入数据。
具体实现的代码如下图所示:
基金的变动信息不论是场内基金还是场外基金都是一样的获取方式,在这里就可以使用通用的逻辑进行处理了,就是之前抓取基金变动信息和基金价格信息的方式。
现在基金基本信息中的基金类型还是中文,这样的中文存储起来不符合常用的编码规范,之前没有处理是因为还不知道有多少种基金的类型,现在已经获取到了所有的基金,这个时候我们需要查询一下所有的基金类型,然后建立枚举来表述不同的基金类型。
# 获取所有的基金类型信息 select distinct fund_type from tb_fund_list;
根据查询出来的基金类型,最终定义的基金类型如下图所示:
fund_type_dic = { "QDII": "1", "商品(不含QDII)": "2", "股票型": "3", "指数型-股票": "4", "混合型-偏债": "51", "混合型-偏股": "52", "混合型-平衡": "53", "混合型-灵活": "61", "债券型-中短债": "62", "债券型-可转债": "63", "债券型-混合债": "64", "债券型-长债": "65" }
根据经验来说,债券型的基金相对比较多,如果对债券基金感兴趣的
可以时常更新数据,在后续的操作中以非债券型基金为主进行分析,数据总量相对较小,批量更新的时间也相对较短。
在之前的基金获取过程中,总体来讲获取的顺序是混乱的,在最终的数据结果存储时,需要将获取的信息基金拼接和组装。最终的更新数据顺序为:
获取基金的信息已经完毕,已经把基金信息保存成功,在下一章中将介绍如何建立线性模型去评估基金的分数,为投资基金做出定量分析。