5行搞定全股票池日线本地数据库
5行不够的话就再多几行
那么多数据,还是放在数据库里面吧
有时候想要简单对股票日线级别数据进行一点分析,然而当数据量特别大,比如说全股票池的时候,用tushare提供的各种API接口去一一拉取,就只能祈祷自己的网速比较给力了,不然各种url open timeout让你怀疑人生。这个时候,把数据保存到本地就显得十分有必要了。
作为一名小白,其实我是想把股票数据保存成csv的,什么to_csv,read_csv,各种轻松写意。然而,保存3000多份文件,实在有点暗搓搓。还是老老实实研究一下怎么放到数据库里面比较靠谱。
最终,党组织的决定是,使用MySQL作为数据库,MySQLdb作为python和MySQL之前的桥梁。
安装MySQL和MySQLdb颇费周折,但是这里略去不表,直接进入正题。
这里就是正题
from sqlalchemy import create_engine
import pandas as pd
import tushare as ts
import MySQLdb
basic = ts.get_stock_basics()
basic.head()
image.png
basic.index
Index([u'603157', u'002901', u'300570', u'603321', u'603386', u'300610',
u'002893', u'603559', u'002898', u'603648',
...
u'603103', u'601086', u'600806', u'600432', u'300709', u'300708',
u'300707', u'300706', u'300705', u'300654'],
dtype='object', name=u'code', length=3394)
p = ts.get_k_data('600806', start='2017-01-01')
engine = create_engine('mysql+mysqldb://root:12345@localhost/test')
p.to_sql('600806', engine)
data = pd.read_sql_table('600806', engine)
data.head()
image.png
中间啰嗦几句
- create_engine 的用法,dialect+driver://username:password@host:port/database
- 读写数据库都没问题,现在只要对basic的index(股票代码)进行遍历,把股票的代码作为table name,k_data数据存入其中,本地的数据就可以建立起来了
- 可以每天或者每周update一下这个数据库
engine = create_engine('mysql+mysqldb://root:12345@localhost/stock')
for code in basic.index:
p = ts.get_k_data(code, start='2017-01-01')
p.to_sql(code, engine)
好了,股票日线数据本地化大功告成。
image.png image.png
网友评论