给自己搭一个金融数据库(三)

网友投稿 802 2022-05-29

在这个实体经济都开始数字驱动的时代,股市韭菜也得与时俱进,不能停留在拍脑袋决定买或卖的时点上。本文用于记录0-1给自己搭一个金融数据库的过程。

3. 数据库定时更新

3.1. 追加式更新

我们以上证指数收盘价为例,来演示一下数据库追加式的定时更新,并尝试用一种新方法来做演示。

3.1.1. 查看数据格式

首先来看一下数据表的格式。

show columns from SSEC;

3.1.2. 获取数据

我们从tushare获取新的数据(热点复现|用Dash做A股量化策略可视也曾提到过tushare)。

import tushare as ts pro = ts.pro_api('your token')

import datetime new_SSEC = pro.index_daily(ts_code='000001.SH', trade_date=datetime.datetime.strftime(datetime.datetime.now(), '%Y%m%d'))[['trade_date', 'close']] new_SSEC

3.1.3. 连接mysql并将数据插入数据库

这里我们使用sqlalchemy,通过pandas的DataFrame来实现插入。

from sqlalchemy import create_engine engine=create_engine('mysql+pymysql://root:password@host:port/database')

root、password、host、port、database处请替换成自己的数据库设置,可参见给自己搭一个金融数据库(一)或留言交流。

给自己搭一个金融数据库(三)

new_SSEC.to_sql('SSEC', engine, index=False, if_exists='append')

注意必须记得加上if_exists='append'。加了这个参数后,如果数据表已经存在,则在原记录上增加。默认的参数下,如果数据表已经存在,将会删除后重新建表。

再去查一下数据库,可以看到插入已经成功了。

3.2. 修改式更新

也有可能有些表不是插入新的记录,而是理发原记录。

比如我有一个表,表结构如下:

它是用来记录每一次买卖的,卖出可能不是跟买入一起记录的,而是后期再去更新的,那个需要用到update,与给自己搭一个金融数据库(二)介绍的insert非常相似。

3.2.1. 连接数据库

import pymysql import pymysql conn = pymysql.connect(host='host', user='root', password='password', port=3306, database='stock', charset='utf8') cur = conn.cursor()

3.2.2. 修改数据库

>>> for i in hold_detail.index: ... sql = "update hold_detail set sale_date=%s, sale_price=%f where id=%d" % (hold_detail['sale_date'][i], hold_detail['sale_price'][i], hold_detail['id'][i]) ... cur.execute(sql) ... conn.commit()

如此,自己的金融数据库搭建完毕。当然,如何用起来才是关键,有机会再做记录。

数据库 金融专区

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ansible模块之file模块和mount模块(九)
下一篇:10.13 Linux dumpe2fs命令:查看文件系统信息
相关文章