本示例主要股票信息,日线行情信息与市值数据信息的本地化
日线行情信息进行了分表,将res按股票代码切分为5个res分别存入5张表中
首先 创建Mysql数据

--创建数据库 jqdata
CREATE SCHEMA `jqdata` COMMENT CHARACTER SET utf8mb4 ;--创建用户 jqdata
CREATE USER 'jqdata'@'%' IDENTIFIED BY 'jqdata';grant all privileges on jqdata.* to 'jqdata'@'%' IDENTIFIED BY 'jqdata'flush privileges;--股票信息表
CREATE TABLE `jqdata`.`t_all_securities` (`security` VARCHAR(20) NOT NULL COMMENT '股票代码',`display_name` VARCHAR(20) NULL COMMENT '中文名称',`name` VARCHAR(50) NULL COMMENT '缩写简称',`start_date` DATE NULL COMMENT '上市日期',`end_date` DATE NULL COMMENT '退市日期,如果没有退市则为2200-01-01',PRIMARY KEY (`security`))
COMMENT = '所有股票信息';--日线行情数据:
--分表规则:股票代码模5取余x
--表名 t_kline_day_x
--索引 股票代码,日期
CREATE TABLE `jqdata`.`t_kline_day_0` (`security` VARCHAR(20) NOT NULL COMMENT '股票代码',`kday` DATE NOT NULL COMMENT '日期',`open` DECIMAL(10,2) NULL COMMENT '时间段开始时价格',`close` DECIMAL(10,2) NULL COMMENT '时间段结束时价格',`low` DECIMAL(10,2) NULL COMMENT '最低价',`high` DECIMAL(10,2) NULL COMMENT '最高价',`volume` BIGINT NULL COMMENT '成交的股票数量',`money` DECIMAL(20,2) NULL COMMENT '成交的金额',`factor` DECIMAL(15,8) NULL COMMENT '前复权因子, 我们提供的价格都是前复权后的, 但是利用这个值可以算出原始价格, 方法是价格除以factor, 比如: close/factor',`high_limit` DECIMAL(10,2) NULL COMMENT '涨停价',`low_limit` DECIMAL(10,2) NULL COMMENT '跌停价',`avg` DECIMAL(10,2) NULL COMMENT '这段时间的平均价, 等于money/volume',`pre_close` DECIMAL(10,2) NULL COMMENT '前一个单位时间结束时的价格, 按天则是前一天的收盘价, 按分钟这是前一分钟的结束价格',`paused` TINYINT NULL COMMENT '布尔值, 这只股票是否停牌, 停牌时open/close/low/high/pre_close依然有值,都等于停牌前的收盘价, volume=money=0',PRIMARY KEY (`security`, `kday`))
COMMENT = '日线行情数据——股票代码模5余0';CREATE TABLE `jqdata`.`t_kline_day_1` (`security` VARCHAR(20) NOT NULL COMMENT '股票代码',`kday` DATE NOT NULL COMMENT '日期',`open` DECIMAL(10,2) NULL COMMENT '时间段开始时价格',`close` DECIMAL(10,2) NULL COMMENT '时间段结束时价格',`low` DECIMAL(10,2) NULL COMMENT '最低价',`high` DECIMAL(10,2) NULL COMMENT '最高价',`volume` BIGINT NULL COMMENT '成交的股票数量',`money` DECIMAL(20,2) NULL COMMENT '成交的金额',`factor` DECIMAL(15,8) NULL COMMENT '前复权因子, 我们提供的价格都是前复权后的, 但是利用这个值可以算出原始价格, 方法是价格除以factor, 比如: close/factor',`high_limit` DECIMAL(10,2) NULL COMMENT '涨停价',`low_limit` DECIMAL(10,2) NULL COMMENT '跌停价',`avg` DECIMAL(10,2) NULL COMMENT '这段时间的平均价, 等于money/volume',`pre_close` DECIMAL(10,2) NULL COMMENT '前一个单位时间结束时的价格, 按天则是前一天的收盘价, 按分钟这是前一分钟的结束价格',`paused` TINYINT NULL COMMENT '布尔值, 这只股票是否停牌, 停牌时open/close/low/high/pre_close依然有值,都等于停牌前的收盘价, volume=money=0',PRIMARY KEY (`security`, `kday`))
COMMENT = '日线行情数据——股票代码模5余1';CREATE TABLE `jqdata`.`t_kline_day_2` (`security` VARCHAR(20) NOT NULL COMMENT '股票代码',`kday` DATE NOT NULL COMMENT '日期',`open` DECIMAL(10,2) NULL COMMENT '时间段开始时价格',`close` DECIMAL(10,2) NULL COMMENT '时间段结束时价格',`low` DECIMAL(10,2) NULL COMMENT '最低价',`high` DECIMAL(10,2) NULL COMMENT '最高价',`volume` BIGINT NULL COMMENT '成交的股票数量',`money` DECIMAL(20,2) NULL COMMENT '成交的金额',`factor` DECIMAL(15,8) NULL COMMENT '前复权因子, 我们提供的价格都是前复权后的, 但是利用这个值可以算出原始价格, 方法是价格除以factor, 比如: close/factor',`high_limit` DECIMAL(10,2) NULL COMMENT '涨停价',`low_limit` DECIMAL(10,2) NULL COMMENT '跌停价',`avg` DECIMAL(10,2) NULL COMMENT '这段时间的平均价, 等于money/volume',`pre_close` DECIMAL(10,2) NULL COMMENT '前一个单位时间结束时的价格, 按天则是前一天的收盘价, 按分钟这是前一分钟的结束价格',`paused` TINYINT NULL COMMENT '布尔值, 这只股票是否停牌, 停牌时open/close/low/high/pre_close依然有值,都等于停牌前的收盘价, volume=money=0',PRIMARY KEY (`security`, `kday`))
COMMENT = '日线行情数据——股票代码模5余2';CREATE TABLE `jqdata`.`t_kline_day_3` (`security` VARCHAR(20) NOT NULL COMMENT '股票代码',`kday` DATE NOT NULL COMMENT '日期',`open` DECIMAL(10,2) NULL COMMENT '时间段开始时价格',`close` DECIMAL(10,2) NULL COMMENT '时间段结束时价格',`low` DECIMAL(10,2) NULL COMMENT '最低价',`high` DECIMAL(10,2) NULL COMMENT '最高价',`volume` BIGINT NULL COMMENT '成交的股票数量',`money` DECIMAL(20,2) NULL COMMENT '成交的金额',`factor` DECIMAL(15,8) NULL COMMENT '前复权因子, 我们提供的价格都是前复权后的, 但是利用这个值可以算出原始价格, 方法是价格除以factor, 比如: close/factor',`high_limit` DECIMAL(10,2) NULL COMMENT '涨停价',`low_limit` DECIMAL(10,2) NULL COMMENT '跌停价',`avg` DECIMAL(10,2) NULL COMMENT '这段时间的平均价, 等于money/volume',`pre_close` DECIMAL(10,2) NULL COMMENT '前一个单位时间结束时的价格, 按天则是前一天的收盘价, 按分钟这是前一分钟的结束价格',`paused` TINYINT NULL COMMENT '布尔值, 这只股票是否停牌, 停牌时open/close/low/high/pre_close依然有值,都等于停牌前的收盘价, volume=money=0',PRIMARY KEY (`security`, `kday`))
COMMENT = '日线行情数据——股票代码模5余3';CREATE TABLE `jqdata`.`t_kline_day_4` (`security` VARCHAR(20) NOT NULL COMMENT '股票代码',`kday` DATE NOT NULL COMMENT '日期',`open` DECIMAL(10,2) NULL COMMENT '时间段开始时价格',`close` DECIMAL(10,2) NULL COMMENT '时间段结束时价格',`low` DECIMAL(10,2) NULL COMMENT '最低价',`high` DECIMAL(10,2) NULL COMMENT '最高价',`volume` BIGINT NULL COMMENT '成交的股票数量',`money` DECIMAL(20,2) NULL COMMENT '成交的金额',`factor` DECIMAL(15,8) NULL COMMENT '前复权因子, 我们提供的价格都是前复权后的, 但是利用这个值可以算出原始价格, 方法是价格除以factor, 比如: close/factor',`high_limit` DECIMAL(10,2) NULL COMMENT '涨停价',`low_limit` DECIMAL(10,2) NULL COMMENT '跌停价',`avg` DECIMAL(10,2) NULL COMMENT '这段时间的平均价, 等于money/volume',`pre_close` DECIMAL(10,2) NULL COMMENT '前一个单位时间结束时的价格, 按天则是前一天的收盘价, 按分钟这是前一分钟的结束价格',`paused` TINYINT NULL COMMENT '布尔值, 这只股票是否停牌, 停牌时open/close/low/high/pre_close依然有值,都等于停牌前的收盘价, volume=money=0',PRIMARY KEY (`security`, `kday`))
COMMENT = '日线行情数据——股票代码模5余4';CREATE TABLE `jqdata`.`t_valuation_0` (`code` VARCHAR(20) NOT NULL COMMENT '股票代码  带后缀.XSHE/.XSHG',`day` DATE NOT NULL COMMENT '取数据的日期',`capitalization` DECIMAL(20,4) NULL COMMENT '总股本(万股)     公司已发行的普通股股份总数(包含A股,B股和H股的总股本)',`circulating_cap` DECIMAL(20,4) NULL COMMENT '流通股本(万股)     公司已发行的境内上市流通、以人民币兑换的股份总数(A股市场的流通股本)',`market_cap` DECIMAL(20,10) NULL COMMENT '总市值(亿元)     A股收盘价*已发行股票总股本(A股+B股+H股)',`circulating_market_cap` DECIMAL(20,10) NULL COMMENT '流通市值(亿元)     流通市值指在某特定时间内当时可交易的流通股股数乘以当时股价得出的流通股票总价值。     A股市场的收盘价*A股市场的流通股数',`turnover_ratio` DECIMAL(10,4) NULL COMMENT '换手率(%)     指在一定时间内市场中股票转手买卖的频率,是反映股票流通性强弱的指标之一。     换手率=[指定交易日成交量(手)100/截至该日股票的自由流通股本(股)]100%',`pe_ratio` DECIMAL(15,4) NULL COMMENT '市盈率(PE, TTM)     每股市价为每股收益的倍数,反映投资人对每元净利润所愿支付的价格,用来估计股票的投资报酬和风险     市盈率(PE,TTM)=(股票在指定交易日期的收盘价 * 当日人民币外汇挂牌价 * 截止当日公司总股本)/归属于母公司股东的净利润TTM。',`pe_ratio_lyr` DECIMAL(15,4) NULL COMMENT '以上一年度每股盈利计算的静态市盈率. 股价/最近年度报告EPS     市盈率(PE)=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/归属母公司股东的净利润。',`pb_ratio` DECIMAL(15,4) NULL COMMENT '市净率(PB)     每股股价与每股净资产的比率     市净率=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/归属母公司股东的权益。',`ps_ratio` DECIMAL(15,4) NULL COMMENT '市销率(PS, TTM)     市销率为股票价格与每股销售收入之比,市销率越小,通常被认为投资价值越高。     市销率TTM=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/营业总收入TTM',`pcf_ratio` DECIMAL(15,4) NULL COMMENT '市现率(PCF, 现金净流量TTM)     每股市价为每股现金净流量的倍数     市现率=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/现金及现金等价物净增加额TTM',PRIMARY KEY (`code`, `day`))
COMMENT = '市值数据-股票代码模5余0';CREATE TABLE `jqdata`.`t_valuation_1` (`code` VARCHAR(20) NOT NULL COMMENT '股票代码  带后缀.XSHE/.XSHG',`day` DATE NOT NULL COMMENT '取数据的日期',`capitalization` DECIMAL(20,4) NULL COMMENT '总股本(万股)     公司已发行的普通股股份总数(包含A股,B股和H股的总股本)',`circulating_cap` DECIMAL(20,4) NULL COMMENT '流通股本(万股)     公司已发行的境内上市流通、以人民币兑换的股份总数(A股市场的流通股本)',`market_cap` DECIMAL(20,10) NULL COMMENT '总市值(亿元)     A股收盘价*已发行股票总股本(A股+B股+H股)',`circulating_market_cap` DECIMAL(20,10) NULL COMMENT '流通市值(亿元)     流通市值指在某特定时间内当时可交易的流通股股数乘以当时股价得出的流通股票总价值。     A股市场的收盘价*A股市场的流通股数',`turnover_ratio` DECIMAL(10,4) NULL COMMENT '换手率(%)     指在一定时间内市场中股票转手买卖的频率,是反映股票流通性强弱的指标之一。     换手率=[指定交易日成交量(手)100/截至该日股票的自由流通股本(股)]100%',`pe_ratio` DECIMAL(15,4) NULL COMMENT '市盈率(PE, TTM)     每股市价为每股收益的倍数,反映投资人对每元净利润所愿支付的价格,用来估计股票的投资报酬和风险     市盈率(PE,TTM)=(股票在指定交易日期的收盘价 * 当日人民币外汇挂牌价 * 截止当日公司总股本)/归属于母公司股东的净利润TTM。',`pe_ratio_lyr` DECIMAL(15,4) NULL COMMENT '以上一年度每股盈利计算的静态市盈率. 股价/最近年度报告EPS     市盈率(PE)=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/归属母公司股东的净利润。',`pb_ratio` DECIMAL(15,4) NULL COMMENT '市净率(PB)     每股股价与每股净资产的比率     市净率=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/归属母公司股东的权益。',`ps_ratio` DECIMAL(15,4) NULL COMMENT '市销率(PS, TTM)     市销率为股票价格与每股销售收入之比,市销率越小,通常被认为投资价值越高。     市销率TTM=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/营业总收入TTM',`pcf_ratio` DECIMAL(15,4) NULL COMMENT '市现率(PCF, 现金净流量TTM)     每股市价为每股现金净流量的倍数     市现率=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/现金及现金等价物净增加额TTM',PRIMARY KEY (`code`, `day`))
COMMENT = '市值数据-股票代码模5余1';CREATE TABLE `jqdata`.`t_valuation_2` (`code` VARCHAR(20) NOT NULL COMMENT '股票代码  带后缀.XSHE/.XSHG',`day` DATE NOT NULL COMMENT '取数据的日期',`capitalization` DECIMAL(20,4) NULL COMMENT '总股本(万股)     公司已发行的普通股股份总数(包含A股,B股和H股的总股本)',`circulating_cap` DECIMAL(20,4) NULL COMMENT '流通股本(万股)     公司已发行的境内上市流通、以人民币兑换的股份总数(A股市场的流通股本)',`market_cap` DECIMAL(20,10) NULL COMMENT '总市值(亿元)     A股收盘价*已发行股票总股本(A股+B股+H股)',`circulating_market_cap` DECIMAL(20,10) NULL COMMENT '流通市值(亿元)     流通市值指在某特定时间内当时可交易的流通股股数乘以当时股价得出的流通股票总价值。     A股市场的收盘价*A股市场的流通股数',`turnover_ratio` DECIMAL(10,4) NULL COMMENT '换手率(%)     指在一定时间内市场中股票转手买卖的频率,是反映股票流通性强弱的指标之一。     换手率=[指定交易日成交量(手)100/截至该日股票的自由流通股本(股)]100%',`pe_ratio` DECIMAL(15,4) NULL COMMENT '市盈率(PE, TTM)     每股市价为每股收益的倍数,反映投资人对每元净利润所愿支付的价格,用来估计股票的投资报酬和风险     市盈率(PE,TTM)=(股票在指定交易日期的收盘价 * 当日人民币外汇挂牌价 * 截止当日公司总股本)/归属于母公司股东的净利润TTM。',`pe_ratio_lyr` DECIMAL(15,4) NULL COMMENT '以上一年度每股盈利计算的静态市盈率. 股价/最近年度报告EPS     市盈率(PE)=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/归属母公司股东的净利润。',`pb_ratio` DECIMAL(15,4) NULL COMMENT '市净率(PB)     每股股价与每股净资产的比率     市净率=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/归属母公司股东的权益。',`ps_ratio` DECIMAL(15,4) NULL COMMENT '市销率(PS, TTM)     市销率为股票价格与每股销售收入之比,市销率越小,通常被认为投资价值越高。     市销率TTM=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/营业总收入TTM',`pcf_ratio` DECIMAL(15,4) NULL COMMENT '市现率(PCF, 现金净流量TTM)     每股市价为每股现金净流量的倍数     市现率=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/现金及现金等价物净增加额TTM',PRIMARY KEY (`code`, `day`))
COMMENT = '市值数据-股票代码模5余2';CREATE TABLE `jqdata`.`t_valuation_3` (`code` VARCHAR(20) NOT NULL COMMENT '股票代码  带后缀.XSHE/.XSHG',`day` DATE NOT NULL COMMENT '取数据的日期',`capitalization` DECIMAL(20,4) NULL COMMENT '总股本(万股)     公司已发行的普通股股份总数(包含A股,B股和H股的总股本)',`circulating_cap` DECIMAL(20,4) NULL COMMENT '流通股本(万股)     公司已发行的境内上市流通、以人民币兑换的股份总数(A股市场的流通股本)',`market_cap` DECIMAL(20,10) NULL COMMENT '总市值(亿元)     A股收盘价*已发行股票总股本(A股+B股+H股)',`circulating_market_cap` DECIMAL(20,10) NULL COMMENT '流通市值(亿元)     流通市值指在某特定时间内当时可交易的流通股股数乘以当时股价得出的流通股票总价值。     A股市场的收盘价*A股市场的流通股数',`turnover_ratio` DECIMAL(10,4) NULL COMMENT '换手率(%)     指在一定时间内市场中股票转手买卖的频率,是反映股票流通性强弱的指标之一。     换手率=[指定交易日成交量(手)100/截至该日股票的自由流通股本(股)]100%',`pe_ratio` DECIMAL(15,4) NULL COMMENT '市盈率(PE, TTM)     每股市价为每股收益的倍数,反映投资人对每元净利润所愿支付的价格,用来估计股票的投资报酬和风险     市盈率(PE,TTM)=(股票在指定交易日期的收盘价 * 当日人民币外汇挂牌价 * 截止当日公司总股本)/归属于母公司股东的净利润TTM。',`pe_ratio_lyr` DECIMAL(15,4) NULL COMMENT '以上一年度每股盈利计算的静态市盈率. 股价/最近年度报告EPS     市盈率(PE)=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/归属母公司股东的净利润。',`pb_ratio` DECIMAL(15,4) NULL COMMENT '市净率(PB)     每股股价与每股净资产的比率     市净率=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/归属母公司股东的权益。',`ps_ratio` DECIMAL(15,4) NULL COMMENT '市销率(PS, TTM)     市销率为股票价格与每股销售收入之比,市销率越小,通常被认为投资价值越高。     市销率TTM=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/营业总收入TTM',`pcf_ratio` DECIMAL(15,4) NULL COMMENT '市现率(PCF, 现金净流量TTM)     每股市价为每股现金净流量的倍数     市现率=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/现金及现金等价物净增加额TTM',PRIMARY KEY (`code`, `day`))
COMMENT = '市值数据-股票代码模5余3';CREATE TABLE `jqdata`.`t_valuation_4` (`code` VARCHAR(20) NOT NULL COMMENT '股票代码  带后缀.XSHE/.XSHG',`day` DATE NOT NULL COMMENT '取数据的日期',`capitalization` DECIMAL(20,4) NULL COMMENT '总股本(万股)     公司已发行的普通股股份总数(包含A股,B股和H股的总股本)',`circulating_cap` DECIMAL(20,4) NULL COMMENT '流通股本(万股)     公司已发行的境内上市流通、以人民币兑换的股份总数(A股市场的流通股本)',`market_cap` DECIMAL(20,10) NULL COMMENT '总市值(亿元)     A股收盘价*已发行股票总股本(A股+B股+H股)',`circulating_market_cap` DECIMAL(20,10) NULL COMMENT '流通市值(亿元)     流通市值指在某特定时间内当时可交易的流通股股数乘以当时股价得出的流通股票总价值。     A股市场的收盘价*A股市场的流通股数',`turnover_ratio` DECIMAL(10,4) NULL COMMENT '换手率(%)     指在一定时间内市场中股票转手买卖的频率,是反映股票流通性强弱的指标之一。     换手率=[指定交易日成交量(手)100/截至该日股票的自由流通股本(股)]100%',`pe_ratio` DECIMAL(15,4) NULL COMMENT '市盈率(PE, TTM)     每股市价为每股收益的倍数,反映投资人对每元净利润所愿支付的价格,用来估计股票的投资报酬和风险     市盈率(PE,TTM)=(股票在指定交易日期的收盘价 * 当日人民币外汇挂牌价 * 截止当日公司总股本)/归属于母公司股东的净利润TTM。',`pe_ratio_lyr` DECIMAL(15,4) NULL COMMENT '以上一年度每股盈利计算的静态市盈率. 股价/最近年度报告EPS     市盈率(PE)=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/归属母公司股东的净利润。',`pb_ratio` DECIMAL(15,4) NULL COMMENT '市净率(PB)     每股股价与每股净资产的比率     市净率=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/归属母公司股东的权益。',`ps_ratio` DECIMAL(15,4) NULL COMMENT '市销率(PS, TTM)     市销率为股票价格与每股销售收入之比,市销率越小,通常被认为投资价值越高。     市销率TTM=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/营业总收入TTM',`pcf_ratio` DECIMAL(15,4) NULL COMMENT '市现率(PCF, 现金净流量TTM)     每股市价为每股现金净流量的倍数     市现率=(股票在指定交易日期的收盘价 * 当日人民币外汇牌价 * 截至当日公司总股本)/现金及现金等价物净增加额TTM',PRIMARY KEY (`code`, `day`))
COMMENT = '市值数据-股票代码模5余4';

获取股票信息

# -*- coding: UTF-8 -*-
import sys
import pandas as pd
import jqdatasdk as jq
import mysql.connector
import pymysql
from sqlalchemy import create_enginedef get_all_securities():'''获取全部股票信息'''res = jq.get_all_securities(types=['stock'], date=None)'''删除type字段'''res=res.drop(['type'], axis=1)'''清表'''mdbconn = mysql.connector.connect(user='jqdata', password='jqdata', database='jqdata', use_unicode=True)cursor = mdbconn.cursor()cursor.execute('truncate table t_all_securities')mdbconn.commit()cursor.close()print('truncate table t_all_securities success')'''DataFrame入库'''pymysql.install_as_MySQLdb()mysqlconnect = create_engine('mysql+mysqldb://jqdata:jqdata@localhost:3306/jqdata?charset=utf8')res.to_sql(name='t_all_securities',con=mysqlconnect,schema='jqdata',if_exists='append',index=True,index_label='security',chunksize=1000)print('all securities saved in t_all_securities success')returndef main():jq.auth('***', '***')get_all_securities()jq.logout()if __name__ == "__main__":sys.exit(main())

获取日线行情信息

# -*- coding: UTF-8 -*-
#如不指定下载数据的时间段,则自动判断下载全量或补充增量,
#如指定下载数据时间段,则删除期间数据,重新下载全部股票的数据import sys
import datetime
import pandas as pd
import jqdatasdk as jq
import mysql.connector
import pymysql
from sqlalchemy import create_enginedef get_one_price(security,startday,endday):'''获取单只股票的指定时间段的后复权日线数据'''res = jq.get_price(security, start_date=startday, end_date=endday, frequency='daily', fields=['open','close','high','low','volume','money','factor','high_limit','low_limit','avg','pre_close','paused'], skip_paused=False, fq='post', count=None)'''增加股票代码列'''res['security']=securityprint(res)'''表路由,计算表名'''tmod=int(security[:6]) % 5tablename='t_kline_day_'+str(tmod)print(tablename)'''清理老数据'''sql="delete from " + tablename + " where security = '" + security + "' and kday >='" + startday + "' and kday <='" + endday + "'"print(sql)    mdbconn = mysql.connector.connect(user='jqdata', password='jqdata', database='jqdata', use_unicode=True)cursor = mdbconn.cursor()cursor.execute(sql)mdbconn.commit()cursor.close()'''DataFrame入库'''pymysql.install_as_MySQLdb()mysqlconnect = create_engine('mysql+mysqldb://jqdata:jqdata@localhost:3306/jqdata?charset=utf8')res.to_sql(name=tablename,con=mysqlconnect,schema='jqdata',if_exists='append',index=True,index_label='kday',chunksize=1000)print("all " + security + "data saved in " + tablename + " success")returndef get_all_price(b='0',e='0'):'''遍历全部股票,获取日线数据''''''从本地数据库里获取全部股票信息,代码,上市日期,退市日期'''mdbconn = mysql.connector.connect(user='jqdata', password='jqdata', database='jqdata', use_unicode=True)sql="select security , start_date, end_date from t_all_securities"securities=pd.read_sql(sql, mdbconn, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)cursor = mdbconn.cursor()for i in range(0,len(securities)):security=securities.iloc[i]['security']#没有入参,表示自动运行,判断已经存在的数据,加载至今的,没有数据,加载全部数据.if b=='0':startday=securities.iloc[i]['start_date'].strftime('%Y-%m-%d')endday=securities.iloc[i]['end_date'].strftime('%Y-%m-%d')tmod=int(security[:6]) % 5tablename='t_kline_day_'+str(tmod)sql="select ifnull(max(kday),'0000-00-00') as kday from " + tablename + " where security = '" + security + "'"cursor.execute(sql)kday = cursor.fetchone()[0]today=datetime.datetime.now().strftime('%Y-%m-%d')#计算起始日期if kday == '0000-00-00':passelif kday != '0000-00-00' and kday < today:delta=datetime.timedelta(days=1)kday=datetime.datetime.strptime(kday, '%Y-%m-%d')startday=(kday+delta).strftime('%Y-%m-%d')#计算结束日期if today < endday :endday=todayelse:#按指定日期运行startday=bendday=eget_one_price(security, startday, endday)cursor.close()returndef main(b='0',e='0'):jq.auth('***', '***')get_all_price(b,e)jq.logout()if __name__ == "__main__":#sys.exit(main())sys.exit(main('2019-07-01','2019-07-02'))

获取市值数据信息

# -*- coding: UTF-8 -*-
#获取市值数据,入参是日期,每日获取全部数据import sys
import datetime
import pandas as pd
import jqdatasdk as jq
from jqdatasdk import *
import mysql.connector
import pymysql
import sqlalchemy
from sqlalchemy import create_enginedef get_oneday_valuation(day):'''获取某一天的所有市值数据由于返回数量限制,分股票代码 0 3 6 开头三次取数据.如何分表呢,将res按股票代码切分为5个res,分别存入5张表中'''for x in ['0','3','6']:#get_fundamentals(query(valuation),date)qry = query(valuation).filter(valuation.code.ilike (x+'__________'))res = get_fundamentals(qry, day)res=res.drop(['id'], axis=1)#增加模列res['mod']=res['code'].map(lambda x:int(x[:6])%5)res0=res.loc[res['mod']==0].drop(['mod'],axis=1)res1=res.loc[res['mod']==1].drop(['mod'],axis=1)res2=res.loc[res['mod']==2].drop(['mod'],axis=1)res3=res.loc[res['mod']==3].drop(['mod'],axis=1)res4=res.loc[res['mod']==4].drop(['mod'],axis=1)#'''清理老数据'''sql0="delete from t_valuation_0 where day = '" + day + "' and code like '"+x+"%'"sql1="delete from t_valuation_1 where day = '" + day + "' and code like '"+x+"%'"sql2="delete from t_valuation_2 where day = '" + day + "' and code like '"+x+"%'"sql3="delete from t_valuation_3 where day = '" + day + "' and code like '"+x+"%'"sql4="delete from t_valuation_4 where day = '" + day + "' and code like '"+x+"%'"mdbconn = mysql.connector.connect(user='jqdata', password='jqdata', database='jqdata', use_unicode=True)cursor = mdbconn.cursor()cursor.execute(sql0)cursor.execute(sql1)cursor.execute(sql2)cursor.execute(sql3)cursor.execute(sql4)mdbconn.commit()cursor.close()'''DataFrame入库'''pymysql.install_as_MySQLdb()mysqlconnect = create_engine('mysql+mysqldb://jqdata:jqdata@localhost:3306/jqdata?charset=utf8')res0.to_sql(name='t_valuation_0',con=mysqlconnect,schema='jqdata',if_exists='append',index=False,chunksize=1000)res1.to_sql(name='t_valuation_1',con=mysqlconnect,schema='jqdata',if_exists='append',index=False,chunksize=1000)res2.to_sql(name='t_valuation_2',con=mysqlconnect,schema='jqdata',if_exists='append',index=False,chunksize=1000)res3.to_sql(name='t_valuation_3',con=mysqlconnect,schema='jqdata',if_exists='append',index=False,chunksize=1000)res4.to_sql(name='t_valuation_4',con=mysqlconnect,schema='jqdata',if_exists='append',index=False,chunksize=1000)print("all "+ day + "valuation data saved in t_valuation_[0,4] success")returnjq.auth('***', '***')
#如果传入非交易日,将会获取到之前的最近一个交易日数据,但是删除数据库历史数据删除传入日期,导致后续插入数据失败.
#使用交易日表 按日期循环取历史
get_oneday_valuation('2019-07-05')
jq.logout()

【转载】使用JQDATA获取数据并本地化(Mysql储存)相关推荐

  1. python获取网页数据后写入mysql_HTTP协议与使用Python获取数据并写入MySQL

    一.Http协议 二.Https协议 三.使用Python获取数据 (1)urlib (2)GET请求 (3)POST请求 四.爬取豆瓣电影实战 1.思路 (1)在浏览器中输入https://movi ...

  2. scrapy读取mysql数据库_python3实战scrapy获取数据保存至MySQL数据库

    python3使用scrapy获取数据然后保存至MySQL数据库,我上一篇写了如何爬取数据保存为csv文件,这一篇将会写如何将数据保存至数据库. 思路大都一样,我列一个思路: 1:获取腾讯招聘网. 2 ...

  3. 用html通过python调用mysql_HTTP协议与使用Python获取数据并写入MySQL

    一.Http协议 二.Https协议 三.使用Python获取数据 (1)urlib (2)GET请求 (3)POST请求 四.爬取豆瓣电影实战 1.思路 (1)在浏览器中输入https://movi ...

  4. requests从api中获取数据并存放到mysql中

    python的requests库是一个非常强大的库,requests的安装方法十分简单,用: pip install requests 即可安装requests,安装成功后: import reque ...

  5. python flask restful api_python之restful api(flask)获取数据

    需要用到谷歌浏览器的扩展程序 Advanced Rest Client进行模拟请求 1.直接上代码 from flask import Flask from flask import request ...

  6. mysql 注入 update_利用insert,update和delete注入获取数据_MySQL

    0x00 简介 利用SQL注入获取数据库数据,利用的方法可以大致分为联合查询.报错.布尔盲注以及延时注入,通常这些方法都是基于select查询语句中的SQL注射点来实现的.那么,当我们发现了一个基于i ...

  7. Loadrunner脚本优化-参数化之关联MySQL数据库获取数据

    脚本优化-参数化之关联MySQL数据库获取数据 by:授客 QQ:1033553122 测试环境: Loadrunner 11 Win7 64位 实操: 1.   安装MySQL ODBC驱动程序 O ...

  8. mysql从库数据源_SoapUI Pro教程:如何使用MySQL服务器作为数据源-从MySQL数据库获取数据...

    SoapUI Pro拥有许多其他web服务测试工具所不具备的高级技术和功能.对于REST.SOAP以及其他流行的API和物联网协议,SoapUI Pro提供了业界最全面的功能测试功能.通过易用的图形界 ...

  9. [交易平台及行情软件] 自制选股工具第一话:用JQData获取行情数据

    -- 本篇文章 by jenemy 最近几个月一直在自己做个主要依赖指标进行选股的工具.期间有几次推到重来的经过,最近基本上成型了,抛砖引玉,给大家谈谈经过吧. 最初的思路是:给定一些技术指标和基本面 ...

最新文章

  1. 使用应用程序(Java/Python)访问MaxCompute Lightning进行数据开发
  2. 分布式文件系统—HDFS—Java API操作
  3. 常用的xshell用vi命令编辑文本
  4. ReactiveCocoa基础
  5. 100元左右的鼠标推荐
  6. NSRange的用法【转】
  7. Windows Phone 7 开发 31 日谈——第22日:应用?还是 游戏?
  8. 如何获取系统的临时目录路径?
  9. oracle简单对象类型
  10. 各种排序算法的时间复杂度对比
  11. IntelliJ IDEA常用快捷键——基于Eclipse
  12. C++学习系列笔记(六)
  13. ElasticSearch、kibana、head、ik分词器在Windows下的安装
  14. 安装软件,竟然把UOS装崩溃了
  15. TWaver可视化软件(七) WEB组态可视化软件
  16. 数字图像处理 冈萨雷斯 (内含算法链接)
  17. JavaFX Scene Builder支持JxBrowser
  18. vue滑块滑动校验,兼容移动端/pc端
  19. pdf打印机有什么功能
  20. Dreamweaver构建Blog全程实录

热门文章

  1. john 探测(爆破)弱口令(包含linux机器,aix小机)/linux上的shadow文件破解,亲测可用
  2. iOS 开发 Certificate和Code Signing--证书与签名--详解
  3. 新任技术管理者应该怎样去开始帮助他人?
  4. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第40讲:PHP中预定义超全局变量
  5. Android时间同步流程
  6. access2003不能启动修复资源
  7. Linux堆内存管理深入分析--阿里聚安全
  8. pdf 转 word 软件
  9. pscp 项目上传中文文件乱码问题
  10. 安防网络摄像头互联网直播视频流媒体服务器EasyNVR输出直播流 RTMP、HTTP-FLV、 HLS 的对比分析