python tushare mysql_用python获取tushare数据并存入mysql数据库(二)日线行情

编程语言:python

编程工具:pycharm

数据来源:tushare

连接mysql方式:SQLAlchemy

1、创建“日线行情”表结构

class Daily(Base):

"""日线行情

ts_codestrN股票代码(二选一)

trade_datestrN交易日期(二选一)

start_datestrN开始日期(YYYYMMDD)

end_datestrN结束日期(YYYYMMDD)

"""

__tablename__ = 'daily'

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

trade_date = Column(String(8), primary_key=True) # 交易日期

open = Column(Float) # 开盘价

high = Column(Float) # 最高价

low = Column(Float) # 最低价

close = Column(Float) # 收盘价

pre_close = Column(Float) # 昨收价

change = Column(Float) # 涨跌额

pct_chg = Column(Float) # 涨跌幅 (未复权,如果是复权请用 通用行情接口 )

vol = Column(Float) # 成交量 (手)

amount = Column(Float) # 成交额 (千元)

2、建立获取tushare数据函数

def get_daily_code(pro, ts_code, start_date, end_date, retry_count=3, pause=2):

"""股票代码方式获取 日线行情 数据"""

for _ in range(retry_count):

try:

df = pro.daily(ts_code=ts_code, start_date=start_date, end_date=end_date,

fields='ts_code,trade_date,open,high,low,close,pre_close,change,pct_chg,vol,amount')

except:

time.sleep(pause)

else:

return df

def get_daily_date(pro, date, retry_count=3, pause=2):

"""日期方式获取 日线行情 数据"""

for _ in range(retry_count):

try:

df = pro.daily(trade_date=date,

fields='ts_code,trade_date,open,high,low,close,pre_close,change,pct_chg,vol,amount')

except:

time.sleep(pause)

else:

return df

3、增删“日线行情”数据

def get_ts_code(engine):

"""查询ts_code"""

return pd.read_sql('select ts_code from stock_basic', engine)

def delete_daily(engine, start_date, end_date):

"""删除 日线行情 数据"""

conn = engine.connect()

conn.execute('delete from daily where trade_date between ' + start_date + ' and ' + end_date)

def update_all_daily(engine, pro, codes, start_date, end_date, retry_count, pause):

"""股票代码方式更新 日线行情"""

for value in codes['ts_code']:

df = td.get_daily_code(pro, value, start_date, end_date, retry_count, pause)

df.to_sql('daily', engine, if_exists='append', index=False)

time.sleep(0.6)

def update_daily_date(engine, pro, date, retry_count, pause):

"""日期方式更新 日线行情"""

df = td.get_daily_date(pro, date, retry_count, pause)

df.to_sql('daily', engine, if_exists='append', index=False)

4、主程序

# 根据需要增删 日线行情 数据 单次提取*4000*条

mf.delete_daily(engine, '19901219', '20191231')

codes = mf.get_ts_code(engine)

mf.update_all_daily(engine, pro, codes, '19901219', '20051231', 3, 2)

mf.update_daily_date(engine, pro, '20190702', 3, 2)

tushare注册链接:https://tushare.pro/register?reg=258131

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值