akshare下载期货日数据并存入mysql

该代码示例展示了如何使用Python的pymysql库连接MySQL数据库,获取akshare提供的期货日行情数据,并创建数据库表结构。之后,将数据导入到对应的表中,实现了数据的存储和管理。
摘要由CSDN通过智能技术生成

import pymysql
import akshare as ak
import pandas as pd
from sqlalchemy import create_engine,text

    
class ConnMysql(object):

    def __init__(self):
        """初始化数据库连接"""
        self._conn = self.get_conn()
        self._cur = None
        if self._conn is not None:
            self._cur = self._conn.cursor()

    def get_conn(self):
        """
        连接数据库
        :return:
        """
        conn = pymysql.connect(
            host="localhost",  # 数据库地址
            user="root",  # 用户名
            password="XXX",  # 密码
            database="futures_daily_data",  # 数据库名
        )

        return conn

    def list_table(self):
        """
        列出所有的表
        :return:
        """
        self._cur.execute("show tables")
        table_list = [tuple[0] for tuple in self._cur.fetchall()]
        self._cur.close()
        return table_list

    def list_col(self, tabls_name):
        """
        查询所有字段
        :param tabls_name:
        :return:
        """
        self._cur.execute("show create table %s" % tabls_name)
        col_name_list = [table for table in self._cur]
        self._cur.close()
        return col_name_list[0]
    
    def create_table(self,table_name):
# 设置表格的字段
        sql = "CREATE TABLE IF NOT EXISTS  " + table_name + '  (id INT AUTO_INCREMENT PRIMARY KEY,\
        symbol VARCHAR(10) NOT NULL,\
        trade_date DATE NOT NULL, \
        open_price DECIMAL(10, 2)  NOT NULL,\
        high_price DECIMAL(10, 2)  NOT NULL, \
        low_price DECIMAL(10, 2)  NOT NULL, \
        close_price DECIMAL(10, 2)  NOT NULL, \
        volume BIGINT NOT NULL, \
        open_interest BIGINT NOT NULL,\
        turnover DECIMAL(20, 2) NOT NULL,\
        settle BIGINT NOT NULL, \
        pre_settle BIGINT NOT NULL,\
        variety VARCHAR(50) NOT NULL,\
        INDEX idx_symbol_trade_date (symbol, trade_date))\
        ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;'
        self._cur.execute(sql)

engine = create_engine("mysql+pymysql://root:Normal403198@localhost/futures_daily_data")

get_futures_daily_df_shfe = ak.get_futures_daily(start_date = '20230414',end_date = '20230414',market = 'SHFE')
variety =get_futures_daily_df_shfe.variety.drop_duplicates().copy()
get_futures_daily_df_shfe.rename(columns={
    'date': "trade_date",
    'open': "open_price",
    'close': "close_price",
    'high': "high_price",
    'low': "low_price"}, inplace=True)
#get_futures_daily_df.set_index('trade_date',inplace = True)
#get_futures_daily_df.reset_index(inplace = True)
get_futures_daily_df_shfe.replace('',0,inplace = True)
get_futures_daily_df_shfe.variety = get_futures_daily_df_shfe.variety.str.lower()
for var in variety.values:
    print(var)
group = dict(list(get_futures_daily_df_shfe.groupby('variety')))
symbol = list(group.keys())
  
for k,value in group.items():
    print(value)
    value.to_sql(k,index = False,con = engine,if_exists='append')


df = pd.read_sql_query(text("SELECT * FROM au where symbol = 'AU2212' "), con=engine)
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
期货全品种行情下载工具和行情重播回测API 期货市场全品种行情tick数据收集工具3.1 支持盘中实时行情和历史行情连续回播,开盘时间申请到当前行情时间段也不会缺行情, 当数据服务器将文件历史行情回播完成后,开始接着播放实时行情,直到通过python api 调用方法,通知服务器停止回播实时行情。 目前不支持并发,对同一个品种多次调用回播api,会导致回播行情数据顺序错乱。 对不同品种多次调用回播api,可能因为cpu占用过大,会导致服务器UI没有响应。后面升级版本会 完整的并发解决方案。 期货市场全品种行情tick数据收集工具3.0 (1)TCP网络连接由同步模式改为异步模式,解决某些网络状况无法连接数据采集服务器的问题 未来升级版本将优化性能 期货市场全品种行情tick数据收集工具2.9b 清理了不需要的.lib,不会再提示缺少ctp的dll文件,删除了不需要的方法 支持任意IP地址的连接,可以实现连接云主机运行的行情收集服务器,或局域网里的行情收集服务器。 期货市场全品种行情tick数据收集工具2.9 修复了多个API进程之间回调数据时互相影响 当前合约数约323个合约,最大范围1200个合约,视合约产品而定。 本例正式发布版本2.7 可以自由设置行情服务器 模拟simnow24小时行情服务器在交易上午没有数据,要在下午4点之后才有数据。 模拟simnow实盘同步时间服务器,和实盘同步。 可改为期货公司的服务器IP,见“快期”软件设置“测试和代理”中的行情IP地址 双击合约文件列表可打开分时图 TestPythonApi可以调用DataCollectServer收集的行情数据(给定合约和时间段) 2017.3.11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值