前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python拉取股票数据存入mysql

python拉取股票数据存入mysql

作者头像
xiny120
发布2019-06-11 11:26:44
2.5K0
发布2019-06-11 11:26:44
举报
文章被收录于专栏:毛毛v5毛毛v5

用python拉取 https://tushare.pro/register?reg=129295 中的股票数据并存入mysql.

代码语言:javascript
复制
# encoding:utf-8
import tushare as ts
import pandas as pd
import pymysql
import time
import datetime
import os

#节假日,跳过
rest = ["20180924","20181001","20181002","20181003","20181004","20181005","20181231","20190101","20190204","20190205","20190206","20190207",
"20190208"]

for k, v in enumerate(rest):
    print( k, v)

config = {
          'host':'106.14.145.51',
          'port':4000,
          'user':'pic98',
          'password':'hello',
          'database':'Stocks',
          }

ts.set_token('你的挖地兔token')
#[挖地兔token获取地址:](https://tushare.pro/register?reg=129295)
pro = ts.pro_api()

#df = ts.get_today_ticks('600309')
#df.head(10)
#df = ts.get_tick_data('000001','2018-10-11',3,0,'tt')
df = pro.stock_basic()
print('-------')
db = pymysql.connect(**config)
cursor = db.cursor()
idx = 0
for dd in df.values:
    idx = idx+1
    if idx % 50 == 0:
        os.system("cls")
    try:
        today=datetime.date.today()
        oneday=datetime.timedelta(days=1)
        li=[]
        for i in range(0,5):
            try:
                today=today-oneday
                ticktoday=datetime.datetime.strftime(today,'%Y-%m-%d')
                ticktodayid=datetime.datetime.strftime(today,'%Y%m%d')                
                weekd = today.weekday()
                if weekd == 5 or weekd == 6:
                    print(datetime.date.today(),ticktodayid,dd[0],"已有跳过(双休日)...")
                    continue

                continue0_ = False
                for k, v in enumerate(rest):
                    if v == ticktodayid:
                        continue0_ = True
                        break
                if continue0_ == True:
                    print(ticktodayid,dd[0],"已有跳过(节假日)...")
                    continue
                        
                #print(ticktoday)
                
                sql = "SELECT dayid,ts_code,value FROM PowerByDay WHERE ts_code = '%s' and dayid='%s' order by dayid desc"
                data = (dd[0],ticktodayid)
                cursor.execute(sql % data)
                if cursor.rowcount > 0:
                    result = cursor.fetchall()
                    continue_ = False
                    for item in result:
                        if item[0] == int(ticktodayid):
                            continue_ = True
                            break
                    if continue_ == True:
                        print(ticktodayid,dd[0],"已有跳过(已入库)...")
                        continue

                time.sleep(2)
                tick = ts.get_tick_data(dd[1],ticktoday,3,0,'tt')
                #print(tick)
                if tick is None : 
                    print(i,ticktodayid,dd[0],"无数据!")
                    continue
                powertotal = 0
                for tick0 in tick.values:
                    if tick0[5] == '卖盘' :
                        powertotal -= tick0[3]
                    elif tick0[5] == '买盘':
                        powertotal += tick0[3]

                sql = 'INSERT INTO PowerByDay(DayId,ts_code, symbol, name, market,value ) VALUES (%s, "%s", "%s", "%s","%s",%.2f)' 
                data = (ticktodayid,dd[0],dd[1],dd[2],dd[5],powertotal)
                print('%d\t%d\t%s\t%s\t%s\ttickcount:%d' % (idx,i,ticktodayid,dd[0],dd[2],tick.values.size))
                print(datetime.date.today(),sql % data)
                cursor.execute(sql % data)
                db.commit()
            except Exception as e:
                print(e)
                db.rollback()
    except Exception as e:
        print(e)
        
 
# 关闭数据库连接
db.close()



print('-------')
#df = pro.query('suspend', ts_code='', suspend_date='20180927', resume_date='', fiedls='')
#df = pro.suspend(ts_code='600848.SH', suspend_date='', resume_date='', fiedls='')
#print(df)
print(ts.__version__)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.04.02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档