给自己搭一个金融数据库(二)
【摘要】 在这个实体经济都开始数字驱动的时代,股市韭菜也得与时俱进,不能停留在拍脑袋决定买或卖的时点上。本文用于记录0-1给自己搭一个金融数据库的过程。2. 将本地数据存入到mysql数据库2.1. python连接到mysql2.1.1. 安装包首先安装python连接mysql数据库的包pymysqlpip install pymysql2.1.2. 连接mysql然后进入Python,如果用ju...
在这个实体经济都开始数字驱动的时代,股市韭菜也得与时俱进,不能停留在拍脑袋决定买或卖的时点上。本文用于记录0-1给自己搭一个金融数据库的过程。
2. 将本地数据存入到mysql数据库
2.1. python连接到mysql
2.1.1. 安装包
首先安装python连接mysql数据库的包pymysql
pip install pymysql
2.1.2. 连接mysql
然后进入Python,如果用jupyter notebook或其他的IDE应该会更加方便。因为我对Python比较熟悉,所以这里直接用命令操作。
先导入包
import pymysql
然后连接到自己的mysql
conn = pymysql.connect(host='localhost', user='root', password='y;r,ken2Rl;m', port=3306, database='stock', charset='utf8')
注意这里的host,如果可远程访问,可以通过IP来访问。
再然后生成一个游标对象
cur = conn.cursor()
接下来就可以愉快地操作数据库了。
2.2. 建表
先建一个买卖计划表,用于存放自己的买卖计划
sql = "create table plan(id int primary key not null auto_increment, ts_code varchar(10) not null, direction varchar(1) not null, price decimal not null, num int not null)"
cur.execute(sql)
conn.commit()
plan表创建成功了,我们可以用命令看一下。
sql = "show tables"
cur.execute(sql)
cur.fetchall()
如果考虑得不够周到,还可以给新建的表增加列
sql = "alter table plan add strategy int"
cur.execute(sql)
conn.commit()
2.3. 读取本地(文件)数据表
import pandas as pd
data = pd.read_csv('/root/s_dash/data/plan9.csv', encoding='gbk')
可以看到本地数据已经读取成功了
2.4. 将本地(文件)数据写入mysql
>>> for i in data.index:
... sql = "insert into plan(strategy, date, ts_code, direction, price, num) values(9, %s, '%s', '%s', %f, '%s')"
... if data.loc[i, '买/卖'] == '买':
... direction = 'b'
... else:
... direction = 's'
... sql = sql % (data.loc[i, '日期'], data.loc[i, '代码'], direction, data.loc[i, '价格'], data.loc[i, '数量'])
... cur.execute(sql)
... conn.commit()
注意,由于我建表时买卖方向的字段用的是varchar(1),所以这里的中文“买”或“卖”要转为'b'或's'来写入数据库。
2.5. 将本地文件批量写入到数据库
先删除刚刚写入的数据
>>> sql = "delete from plan"
>>> cur.execute(sql)
117
>>> conn.commit()
打开文件夹,获得文件夹下的所有文件的生成器对象
>>> import os
>>> files = os.listdir('/root/s_dash/data')
将每个文件写入到数据表中
>>> for file in files:
... if file.startswith('plan'):
... strategy = file.split('.')[0][4:]
... data = pd.read_csv('/root/s_dash/data/'+file, encoding='gbk')
... for i in data.index:
... sql = "insert into plan(strategy, date, ts_code, direction, price, num) values(9, %s, '%s', '%s', %f, '%s')"
... if data.loc[i, '买/卖'] == '买':
... direction = 'b'
... else:
... direction = 's'
... sql = sql % (data.loc[i, '日期'], data.loc[i, '代码'], direction, data.loc[i, '价格'], data.loc[i, '数量'])
... cur.execute(sql)
... conn.commit()
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)