1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > tushare股票列表mysql_用python获取tushare数据并存入mysql数据库(一)股票列表

tushare股票列表mysql_用python获取tushare数据并存入mysql数据库(一)股票列表

时间:2021-03-30 16:12:15

相关推荐

tushare股票列表mysql_用python获取tushare数据并存入mysql数据库(一)股票列表

编程语言:python

编程工具:pycharm

数据来源:tushare

连接mysql方式:SQLAlchemy

1、创建“股票列表”表结构,存为mysql_tables_structure.py

# coding=utf-8

from sqlalchemy import Column, String, Float

from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class StockBasic(Base):

"""股票列表

is_hs strN是否沪深港通标的,N否 H沪股通 S深股通

list_statusstrN上市状态: L上市 D退市 P暂停上市

exchangestrN交易所 SSE上交所 SZSE深交所 HKEX港交所(未上线)

"""

__tablename__ = 'stock_basic'

ts_code = Column(String(10), primary_key=True) # TS代码

symbol = Column(String(10)) # 股票代码

name = Column(String(10)) # 股票名称

area = Column(String(4)) # 所在地域

industry = Column(String(4)) # 所属行业

fullname = Column(String(30)) # 股票全称

enname = Column(String(100)) # 英文全称

market = Column(String(3)) # 市场类型 (主板/中小板/创业板)

exchange = Column(String(4)) # 交易所代码

curr_type = Column(String(3)) # 交易货币

list_status = Column(String(1)) # 上市状态: L上市 D退市 P暂停上市

list_date = Column(String(8)) # 上市日期

delist_date = Column(String(8)) # 退市日期

is_hs = Column(String(1)) # 是否沪深港通标的,N否 H沪股通 S深股通

2、建立获取tushare数据函数,存为tushare_data.py

# coding=utf-8

import time

import pandas as pd

def get_stock_basic(pro, retry_count=3, pause=2):

"""股票列表 数据"""

frame = []

for status in ['L', 'D', 'P']:

for _ in range(retry_count):

try:

df = pro.stock_basic(exchange='', list_status=status,

fields='ts_code,symbol,name,area,industry,fullname,enname,market, \

exchange,curr_type,list_status,list_date,delist_date,is_hs')

except:

time.sleep(pause)

else:

frame.append(df)

break

return frame

3、更新“股票列表”数据,存为mysql_functions.py

# coding=utf-8

import pandas as pd

import tushare_data as td

def truncate_update(engine, data, table_name):

"""删除mysql表所有数据,to_sql追加新数据"""

conn = engine.connect()

conn.execute('truncate ' + table_name)

data.to_sql(table_name, engine, if_exists='append', index=False)

def update_stock_basic(engine, pro, retry_count, pause):

"""更新 股票信息 所有数据"""

data = td.get_stock_basic(pro, retry_count, pause)

truncate_update(engine, data, 'stock_basic')

4、主程序

# coding=utf-8

import pandas as pd

import tushare as ts

from sqlalchemy import create_engine

from mysql_tables_structure import Base

import mysql_functions as mf

# 创建数据库引擎

engine = create_engine(mysql://root:****@127.0.0.1/databasename?charset=utf8mb4)

conn = engine.connect()

# 创建mysql所有表结构

Base.metadata.create_all(engine)

# 连接 tushare

ts.set_token(token****)

pro = ts.pro_api()

# 股票列表

mf.update_stock_basic(engine, pro, 3, 2)

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