600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 如何在Python中使用Tushare进行股票日线行情获取并存储至数据库

如何在Python中使用Tushare进行股票日线行情获取并存储至数据库

时间:2023-08-28 12:08:01

相关推荐

如何在Python中使用Tushare进行股票日线行情获取并存储至数据库

Tushare ID:457662

想必很多想从事量化或者有金融爱好的小伙伴们想利用自己的程序对股票走势进行分析。

在最基础的日线行情获取上,很多人就遇到了不小的难题,光是海量的爬虫代码就让人望而生畏。在这里涵涵给大家推荐一个十分好用的第三方库Tushare,Tushare提供了大量的免费金融资源供你调用。

接下来我们将利用Tushare来进行操作。

一、安装接口

方式1:

pip install tushare

如果安装网络超时可尝试国内pip源,如pip install tushare -ihttps://pypi.tuna./simple

方式2:访问/pypi/tushare/下载安装 ,执行 python setup.py install

方式3:访问/waditu/tushare,将项目下载或者clone到本地,进入到项目的目录下,

执行: python setup.py install

二、注册Tushare账号

进入https://tushare.pro/,因为调用接口是需要使用个人的TOKEN哒,不会花费任何钱。

三、调用接口

在这里我们使用最基础的获取日线行情的办法

import tushare as tspro = ts.pro_api()#查询当前所有正常上市交易的股票列表data = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date'

数据样例

ts_codesymbolnamearea industry list_date0000001.SZ 000001 平安银行 深圳 银行 199104031000002.SZ 000002 万科A 深圳全国地产 199101292000004.SZ 000004 国农科技 深圳生物制药 199101143000005.SZ 000005 世纪星源 深圳房产服务 199012104000006.SZ 000006 深振业A 深圳区域地产 199204275000007.SZ 000007 全新好 深圳酒店餐饮 199204136000008.SZ 000008 神州高铁 北京运输设备 199205077000009.SZ 000009 中国宝安 深圳综合类 199106258000010.SZ 000010 美丽生态 深圳建筑施工 199510279000011.SZ 000011 深物业A 深圳区域地产 1992033010 000012.SZ 000012 南玻A 深圳 玻璃 199811 000014.SZ 000014 沙河股份 深圳全国地产 1992060212 000016.SZ 000016 深康佳A 深圳家用电器 1992032713 000017.SZ 000017 深中华A 深圳文教休闲 1992033114 000018.SZ 000018 神州长城 深圳装修装饰 1992061615 000019.SZ 000019 深深宝A 深圳软饮料 1992101216 000020.SZ 000020 深华发A 深圳元器件 1992042817 000021.SZ 000021 深科技 深圳电脑设备 199408 000022.SZ 000022 深赤湾A 深圳 港口 1993050519 000023.SZ 000023 深天地A 深圳其他建材 1993042920 000025.SZ 000025 特力A 深圳汽车服务 19930621

四、建立数据库

接下来我们需要建立一个数据库对其进行存储。

import sqlite3# 硬盘上创建链接con = sqlite3.connect("数据库/上市股票列表.db")# 获取cursor对象cur = con.cursor()# 创建表sql2 = 'CREATE TABLE date(' \'ts_code CHAR(9),' \'trade_date CHAR(8),' \'open CHAR(20),' \'high CHAR(20),' \'low CHAR(20),' \'close CHAR(20),' \'pre_close CHAR(20),' \'change CHAR(20),' \'pct_chg CHAR(20),' \'vol CHAR(20),' \'amount CHAR(20)' \')'cur.execute(sql2)

五、存储数据

由于数据量较大,我们采用循环的方式获取每天的数据并且存储

# 获取所有日期以及是否开盘date = pro.trade_cal(exchange='', start_date='2001', end_date=time.strftime("%Y%m%d", time.localtime()))print(date)# 执行SQL语句,每一千天存储一次,防止内存炸了for i in range(len(date['cal_date'])):if date['is_open'][i] == 0:continueelse:df = pro.daily(trade_date=date['cal_date'][i])for j in range(len(df['ts_code'])):cur.execute(sql3,(df['ts_code'][j], str(df['trade_date'][j]), str(df['open'][j]), str(df['high'][j]),str(df['low'][j]), str(df['close'][j]),str(df['pre_close'][j]), str(df['change'][j]), str(df['pct_chg'][j]), str(df['vol'][j]),str(df['amount'][j])))print(df)if i % 1000 == 1:mit()mit()print("输入成功")

最后别忘记关闭游标

# 关闭游标cur.close()# 关闭连接con.close()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。