Tushare Day1——通过Tushare读取数据并存入MySQL

通过Tushare读取数据并存入MySQL

  • 1  了解Tushare
  • 2  下载sqlalchemy和pymysql包
    • 2.1  sqlalchemy
    • 2.2  pymysql
  • 3  操作实例
    • 3.1  导入包
    • 3.2  从接口获取数据
    • 3.3  将数据储存进mysql中
    • 3.4  了解stock_basic数据

任务:

  • 从api(应用程序编程接口)读取数据并存入mysql

  • 了解stock_basic数据

了解Tushare

Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化

下载sqlalchemy和pymysql包

sqlalchemy

  • SQLAlchemy是Python中最有名的ORM工具。

  • 关于ORM:全称Object Relational Mapping(对象关系映射)。

1.用tuple表示一行很难看出表的结构:

[
    ('1', 'Michael'),
    ('2', 'Bob'),
    ('3', 'Adam')
]
[('1', 'Michael'), ('2', 'Bob'), ('3', 'Adam')]

2.如果把一个tuple用class实例来表示,就可以更容易地看出表的结构来:

class User(object):
    def __init__(self, id, name):
        self.id = id
        self.name = name

[
    User('1', 'Michael'),
    User('2', 'Bob'),
    User('3', 'Adam')
]
[<__main__.User at 0x16a78af90d0>,
 <__main__.User at 0x16a78af9220>,
 <__main__.User at 0x16a78af9ee0>]

这就是传说中的ORM技术:Object-Relational Mapping,把关系数据库的表结构映射到对象上。

sqlalchemy包安装:

!pip install sqlalchemy
Requirement already satisfied: sqlalchemy in d:\anaconda3\lib\site-packages (1.3.18)

pymysql

PyMySQL是在 Python3.x 版本中用于连接 MySQL 服务器的一个库。

pymysql包安装:

!pip install pymysql
Collecting pymysql
  Downloading PyMySQL-1.0.2-py3-none-any.whl (43 kB)
Installing collected packages: pymysql
Successfully installed pymysql-1.0.2

操作实例

导入包

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

从接口获取数据

# 获取数据,获取到的数据是dataframe的形式
ts.set_token('your token') #设置接口,从tushare中粘贴过来
pro = ts.pro_api()
df = pro.stock_basic()
df.head()
ts_code symbol name area industry market list_date
0 000001.SZ 000001 平安银行 深圳 银行 主板 19910403
1 000002.SZ 000002 万科A 深圳 全国地产 主板 19910129
2 000004.SZ 000004 国华网安 深圳 互联网 主板 19910114
3 000005.SZ 000005 世纪星源 深圳 环境保护 主板 19901210
4 000006.SZ 000006 深振业A 深圳 区域地产 主板 19920427

将数据储存进mysql中

在这之前要在mysql中创建一个数据库,名为tushare_test

username = 'root'
password = '000000'
# 把df存储到sql中
engine_ts = create_engine('mysql://' + username + ':'+ password + '@localhost/tushare_test')

上述的python连接数据库——create_engine和conn.cursor

res = df.to_sql('stock_basic', engine_ts, index=False, if_exists='append', chunksize=5000)  #将dataframe用to_sql函数存储到数据库中
#参数依次为df储存到sql里面的表名、用户名和密码、不设置索引、如果存在此表就将其连接起来、每5000条分块
# 读取前20行数据    
sql = """SELECT * FROM stock_basic LIMIT 20"""#写sql语句
df = pd.read_sql_query(sql, engine_ts) #读取sql的查询结果并赋给df,参数分别为sql语句、用户名密码
df.head()
ts_code symbol name area industry market list_date
0 000001.SZ 000001 平安银行 深圳 银行 主板 19910403
1 000002.SZ 000002 万科A 深圳 全国地产 主板 19910129
2 000004.SZ 000004 国华网安 深圳 互联网 主板 19910114
3 000005.SZ 000005 世纪星源 深圳 环境保护 主板 19901210
4 000006.SZ 000006 深振业A 深圳 区域地产 主板 19920427

了解到stock_basic数据的各列分别为索引、股票代码(如SZ是深圳交易所上交易的股票,SH是上海…)、股票代码、股票名称、所在地域、所属行业、市场类型、上市日期

了解stock_basic数据

Tushare Day1——通过Tushare读取数据并存入MySQL_第1张图片
Tushare Day1——通过Tushare读取数据并存入MySQL_第2张图片
Tushare Day1——通过Tushare读取数据并存入MySQL_第3张图片

  • trade_cal字段说明:

cal_date:日历日期
is_open:是否交易 0休市 1交易
pretrade_date:上一个交易日

  • stock_list字段说明:

ts_code:TS代码
symbol:股票代码
name:股票名称
area:所在地域
industry:所属行业
fullname:股票全称
enname:英文全称
market:市场类型 (主板/中小板/创业板)
exchange:交易所代码
curr_type:交易货币
list_status:上市状态: L上市 D退市 P暂停上市
list_date:上市日期
delist_date:退市日期
is_hs:是否沪深港通标的,N否 H沪股通 S深股通

  • stock_daily字段说明:

ts_code:股票代码
trade_date:交易日期
open:开盘价
high:最高价
low:最低价
close:收盘价
pre_close:昨日收盘价
change:涨跌额
pct_chg:涨跌幅
vol:成交量 (手)
amount:成交额 (千元)
turnover_rate:换手率
volume_ratio:量比

  • index_daily字段说明:

ts_code:股票代码
trade_date:交易日期
close:收盘价
open:开盘价
high:最高价
low:最低价
pre_close:昨日收盘价
change:涨跌额
pct_chg:涨跌幅
vol:成交量 (手)
amount:成交额 (千元)

  • 建4张表,分别为“trade_cal:交易日信息”“stock_list 股票信息”“stock_daily 股票交易信息”“index_daily 指数信息”

想注册Tushare账号可以从我的连接进去嗷https://tushare.pro/register?reg=420604,这样我可以获得50积分嗷,谢谢支持啦!

你可能感兴趣的:(python基础,金融量化,数据库,mysql,orm)