Tushare使用入门

本文介绍使用python从Tushare下载数据并存储到csv文件和mssql数据库中。

Tushare简介
Tushare金融大数据开放社区,免费提供各类金融数据和区块链数据,助力智能投资与创新型投资。网址:https://tushare.pro 

python环境安装
强烈建议使用Anaconda,Anaconda的安装见:https://tushare.pro/document/1?doc_id=29
python的IDE我使用vscode,在Anaconda主界面中直接打开vscode,它会帮你设置好环境,简单方便。

tushare库安装
打开vscode的[查看]->[终端],输入 pip install tushare 即可安装tushare。输入 pip install tushare --upgrade 即可更新tushare。缺少或者更新其他python库,参照这个方法即可。

环境安装好后,就可以开工了。直接上代码,这份代码从Tushare下载股票列表数据,保存为csv文件,同时保存在mssql数据库中。

注意:在to_sql中的schema参数为数据库名,需要带上该数据库的角色,我使用sa登录,数据库隶属于dbo。使用to_sql不需要创建表,pandas会自动帮你创建好,也不需要自己写插入数据的代码,还是很方便的。如果你在表中增加了主键或者唯一索引,有重复数据时批量入库会失败。tushare本身是有少量重复数据的。采用逐行入库的方式速度会比较慢,需要根据业务自己衡量选择。


#!/usr/bin/python3
# coding:utf-8
# -*- coding: utf-8 -*-

import time
import datetime
import random

import tushare
import pandas
import pymssql
import sqlalchemy


#需修改的参数
stock_list_file = 'stock_list.csv'    #股票列表文件csv

#tushare token
tushare_token='d41425f7760d2e3b297299c3b0d2b47b7886a88dbc4df5ed5......'

#数据库参数
db_host = '127.0.0.1'
db_user = 'sa'
db_password = 'pwd'
db_db = 'quantum'
db_charset = 'utf8'
db_url = 'mssql+pymssql://sa:pwd@127.0.0.1:1433/quantum'


#股票列表
def get_stock_basic() :
    print('开始下载股票列表数据')

    #获取tushare    
    pro = tushare.pro_api()

    #下载
    data = pro.stock_basic(fields='ts_code,symbol,name,fullname,list_status,list_date,delist_date')
    
    #保存到csv文件
    data.to_csv(stock_list_file)

    #入库    
    engine = sqlalchemy.create_engine(db_url)

    try:
        #先一次性入库,异常后逐条入库
        pandas.io.sql.to_sql(data, 'stock_basic', engine, schema='quantum.dbo', if_exists='append', index=False)
    except :
        #逐行入库
        print('批量入库异常,开始逐条入库.')
        for indexs in data.index :
            line = data.iloc[indexs:indexs+1, :]

            try:
                pandas.io.sql.to_sql(line, 'stock_basic', engine, schema='quantum.dbo', if_exists='append', index=False, chunksize=1)
            except:
                print('股票列表数据入库异常:')
                print(line)                
            finally:
                pass
    finally:
        pass
        
    print('完成下载股票列表数据')
    return 1


#全量下载所有股票列表数据
if __name__ == '__main__':
    print('开始...')

    #初始化tushare
    tushare.set_token(tushare_token)
    
    print('获取股票列表')
    get_stock_basic()

    print('结束')
 

没有更多推荐了,返回首页