IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Tushare之金融数据的获取与存入数据库 -> 正文阅读

[大数据]Tushare之金融数据的获取与存入数据库

目的:获取Tushare中的历史数据以及实时金融数据,并将其导入本地数据库中。

#====================历史数据(df)导入=========================

import pandas as pd
import numpy as np
import tushare as ts
import datetime
import pymysql


#=================Tushare数据的获得===================
连接Tushare
pro = ts.pro_api('*********')

#获取最新交易日期
latest_trade_day = pro.daily_basic\(ts_code='000001.SZ',fields='trade_date').trade_date[0]

trade_cal = pro.trade_cal(exchange='', start_date='19900101', end_date='20210929') 

trade_date = trade_cal[(trade_cal.is_open==1)&(trade_cal.cal_date>='20210101')]
trade_date = trade_date.cal_date
begin = trade_date.iloc[0]


#获得最新股票列表
df = pro.daily_basic\

(ts_code='',trade_date = begin,\

fields='ts_code,trade_date,close,turnover_rate,volume_ratio,pe,pe_ttm,pb,ps,ps_ttm,dv_ratio,dv_ttm,total_share,float_share,free_share,total_mv,circ_mv')

#获取总股票数据列表
for i in list(trade_date):
    df1 = pro.daily_basic\

(ts_code='',trade_date = i,fields='ts_code,trade_date,close,turnover_rate,volume_ratio,pe,pe_ttm,pb,ps,ps_ttm,dv_ratio,dv_ttm,total_share,float_share,free_share,total_mv,circ_mv')
    df = pd.concat([df,df1],ignore_index = True)  #默认纵向合并,行数增加


#========================================================================
# 参数设置 DictCursor使输出为字典模式
config = dict(host='localhost', user='root', password='lhy20020127',
             cursorclass=pymysql.cursors.DictCursor
             )
# 建立连接
conn = pymysql.Connect(**config)

# 自动确认commit True
conn.autocommit(1)

# 设置光标
cursor = conn.cursor()

#========================================================================

df_1 = df.where(df.notnull(),None)

# 一个根据pandas自动识别type来设定table的type
def make_table_sql(df):  #传入dataframe
    columns = df.columns.tolist()
    
    #df.dtypes 返回每一列的数据类型
    types = df.dtypes
    
    # 添加id 制动递增主键模式
    make_table = []
    for item in columns:
        if 'int' in str(types[item]):
            char = item + ' INT' + ' null'
        elif 'float' in str(types[item]):
            char = item + ' FLOAT' + ' null'
        elif 'object' in str(types[item]):
            char = item + ' VARCHAR(255)' + ' null'     
        elif 'datetime' in str(types[item]):
            char = item + ' DATETIME' + ' null'            
        make_table.append(char)
    return ','.join(make_table)   #返回字符串

#=============输入 mysql 中===============
def my_sql(db_name, table_name, df): 

    #传入数据库名字(注意为字符串),表名和要传输的dataframe    
    # 创建database
    cursor.execute('CREATE DATABASE IF NOT EXISTS {}'.format(db_name))
    # 选择连接database
    cursor.execute('USE {}'.format(db_name))
    # 创建新table
    cursor.execute('CREATE TABLE IF NOT EXISTS {}({})'.format(table_name,make_table_sql(df)))
    
   #========================================================================
    # 提取数据转list 这里由于pandas时间模式无法写入因此换成str
    lst = []
    for i in df.dtypes:
        lst.append(str(i))
    for i in lst:
        if 'datetime' in i:          
             s = df.columns[lst.index(i)]
             df[s] = df[s].astype('str')
    #========================================================================
    
    
    values = df.values.tolist()
    # 根据columns个数
    s = ','.join(['%s' for i in range(len(df.columns))])
    # executemany批量操作 插入数据 批量操作比逐个操作速度快很多
    cursor.executemany('INSERT INTO {} VALUES ({})'.format(table_name,s), values)
    
my_sql('test','test_df',df_1)

# 光标关闭
cursor.close()
# 连接关闭
conn.close()

检验

#连接数据库
mysql -u root -p
#输入密码
show databases;

?运行程序

?

?

运行程序之后的数据库插入了Tushare金融数据

?

Tushare金融数据成功存入mysql数据库

?

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-08 11:51:37  更:2021-10-08 11:52:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:23:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码