给自己搭一个金融数据库(三)
【摘要】 在这个实体经济都开始数字驱动的时代,股市韭菜也得与时俱进,不能停留在拍脑袋决定买或卖的时点上。本文用于记录0-1给自己搭一个金融数据库的过程。3. 数据库定时更新3.1. 追加式更新我们以上证指数收盘价为例,来演示一下数据库追加式的定时更新,并尝试用一种新方法来做演示。3.1.1. 查看数据格式首先来看一下数据表的格式。show columns from SSEC;3.1.2. 获取数据我们...
在这个实体经济都开始数字驱动的时代,股市韭菜也得与时俱进,不能停留在拍脑袋决定买或卖的时点上。本文用于记录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()
如此,自己的金融数据库搭建完毕。当然,如何用起来才是关键,有机会再做记录。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)