在这个实体经济都开始数字驱动的时代,股市韭菜也得与时俱进,不能停留在拍脑袋决定买或卖的时点上。本文用于记录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()
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END




















![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)