初入python,尝试获得A股交易数据(4)——利用tushare获取A股数据并尝试存入mysql

这篇文章是上一篇的补充

以中国石油股票为例,代码601857

1.获取从2018年5月1日到2018年5月4日的数据

import tushare as ts
data=ts.get_hist_data('601857',start='2018-05-01',end='2018-05-04')
print(data)

还有两个函数

ts.get_h_data  #该函数只返回开盘价(open)、最高价(high)、收盘价(close)、最低价(low)、成交量(volume)、成交金额(amount)六列 
ts.get_k_data  #这个函数获取数据的速度很明显要快很多,而且可以返回每一只股票从上市开始到当前交易日的所有日线数据

结果如下

            open  high  close   low     volume  price_change  p_change    ma5  \
date                                                                            
2018-05-04  7.67  7.71   7.70  7.65  198814.75          0.00      0.00  7.644   
2018-05-03  7.61  7.72   7.70  7.57  329403.06          0.09      1.18  7.630   
2018-05-02  7.65  7.66   7.61  7.56  232936.98         -0.04     -0.52  7.632   

             ma10   ma20      v_ma5     v_ma10     v_ma20  turnover  
date                                                                 
2018-05-04  7.654  7.617  256535.02  279011.03  329645.21      0.01  
2018-05-03  7.647  7.615  256410.19  288602.43  336304.65      0.02  
2018-05-02  7.630  7.612  267643.88  277844.68  335077.15      0.01  
  • date:日期
  • open:开盘价
  • high:最高价
  • close:收盘价
  • low:最低价
  • volume:成交量
  • price_change:价格变动
  • p_change:涨跌幅
  • ma5:5日均价
  • ma10:10日均价
  • ma20:20日均价
  • v_ma5:5日均量
  • v_ma10:10日均量
  • v_ma20:20日均量
  • turnover:换手率[注:指数无此项]

2.此外还有

ts.get_hist_data('601857', ktype='W') #获取周k线数据
ts.get_hist_data('601857', ktype='M') #获取月k线数据
ts.get_hist_data('601857', ktype='5') #获取5分钟k线数据
ts.get_hist_data('601857', ktype='15') #获取15分钟k线数据
ts.get_hist_data('601857', ktype='30') #获取30分钟k线数据
ts.get_hist_data('601857', ktype='60') #获取60分钟k线数据
ts.get_hist_data('sh')#获取上证指数k线数据,其它参数与个股一致,下同
ts.get_hist_data('sz')#获取深圳成指k线数据
ts.get_hist_data('hs300')#获取沪深300指数k线数据
ts.get_hist_data('sz50')#获取上证50指数k线数据
ts.get_hist_data('zxb')#获取中小板指数k线数据
ts.get_hist_data('cyb')#获取创业板指数k线数据
ts.get_today_all()#获取实时行情数据
ts.get_tick_data()#获取历史分笔数据,获取当前分笔数据用ts.get_today_ticks()

3.数据的存储

mysql的安装与连接花费了很长时间,对于一个新手来说很有挫败感

  • name:表名,pandas会自动创建表结构
  • con:数据库连接,最好是用sqlalchemy创建engine的方式来替代con
  • flavor:数据库类型 {‘sqlite’, ‘mysql’}, 默认‘sqlite’,如果是engine此项可忽略
  • schema:指定数据库的schema,默认即可
  • if_exists:如果表名已存在的处理方式 {‘fail’, ‘replace’, ‘append’},默认‘fail’
  • index:将pandas的Index作为一列存入数据库,默认是True
  • index_label:Index的列名
  • chunksize:分批存入数据库,默认是None,即一次性全部写人数据库
  • dtype:设定columns在数据库里的数据类型,默认是None


from sqlalchemy import create_engine
import tushare as ts

df = ts.get_tick_data('601857', date='2018-05-04')
engine = create_engine('mysql://user:[email protected]/db_name?charset=utf8')

#存入数据库
df.to_sql('tick_data',engine)

#追加数据到现有表
#df.to_sql('tick_data',engine,if_exists='append')

另外在mysql中创建一个空的表,表名t_user,int为整数类型,date是日期类型,decimal可以设置精度

create table t_user(
id int auto_increment primary key,
date date not null ,
open decimal(3,2) not null,
high decimal(3,2)not null,
close decimal(3,2)not null,
low decimal(3,2)not null,
volume decimal(9,1)not null,
amount decimal(9,1)not null

);

但是,总是出现error :[42000][1049] Unknown database,这个还需要在思考一下

猜你喜欢

转载自blog.csdn.net/qdu5er/article/details/80201947