Tushare

文章目录

    • 安装
    • 新老接口
    • 调用接口需要获取基础积分
    • 存入Mysql数据库
    • 重试机制

系统:ubuntu18.04
python:3.8

使用Python SDK方式调用tushare接口。
官方文档都写的非常详细,这里只记录下使用中遇到的问题与解决方式。

安装

首先已经安装好conda或者python环境。官方文档也有其他安装方式,简单来说就以下这两种。

$ conda install tushare

or

$ pip install tushare

新老接口

tushare有一套历史接口,目前已经停止维护。所以在使用old接口时,会报错

本接口即将停止更新,请尽快使用Pro版接口:https://tushare.pro/document/2
...
urllib.error.URLError: <urlopen error [Errno -2] Name or service not known>

所以这里直接略过老接口,使用新接口

调用接口需要获取基础积分

调用pro接口,需要一些基础积分,比如stock_basic就需要120积分。注册+完善个人资料,就可以获取到100+20积分,就可以调用一些基本的接口。注册完成后,可记录下自己的token,在“用户中心”中点击“接口TOKEN”可以看到,在调用接口时,需要使用。

存入Mysql数据库

因为python3没有MySQLdb,所以这里需要用pymysql。
create_engine中的user,passwd,host,dbname,需要根据实际情况做调整。
以stock_basic接口返回数据作为例子,降返回结果存入stock_basic表。

import pandas as pd
import tushare as ts
import pymysql
pymysql.install_as_MySQLdb()
from sqlalchemy import create_engine 

engine_ts = create_engine('mysql://user:passwd@host/dbname?charset=utf8')

def write_data(df):
    res = df.to_sql('stock_basic', engine_ts, index=False, if_exists='append', chunksize=5000)
    print(res)


def get_data():
    pro = ts.pro_api('your_token')
    df = pro.stock_basic()
    return df


if __name__ == '__main__':
    df = get_data()
    write_data(df)
    print(tc)

重试机制

有时接口不能太频繁调用,可能会失败,所以需要重试机制。
以daily接口使用举例:

# 获取日线行情,保持数据稳定性,需要重试机制
def get_daily(trade_date):
    try_count = 10
    for i in range(try_count):
        try:
            df = pro.daily(trade_date=trade_date)
        except:
            print('get_daily try again ' + str(i))
            time.sleep(2)
        else:
            return df
    print(str(try_count) + ' try failed!')

你可能感兴趣的:(python,python,tushare)