如此简陋的本地股票数据库

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容