(python)从Baostock下载股票K线数据保存到本地Mysql数据库

最近在下载数据的时候发现很多原来免费的数据库现在都开始收费了,于是就想写个小程序把数据保存到本地,一开始想保存到CSV里,但是想起好久没用的mysql的知识都生疏了,正好写个小DEMO练练手。

前期准备

  1. 在本地安装Mysql (安装方法请百度 菜鸟教程 Mysql)
  2. Python 3.6

Mysql

import mysql.connector

class MysqlConnector():
    def __init__(self, host, user, passwd, auth_plugin):

        self.host = host
        self.user = user
        self.passwd = passwd
        self.auth_plugin = auth_plugin
        self.connection = mysql.connector.connect(
            host=self.host,  # 数据库主机地址
            user=self.user,  # 数据库用户名
            passwd=self.passwd,  # 数据库密码
            auth_plugin=self.auth_plugin # 解决MYSQL 8.0默认加密模式不匹配问题
        )

    def createCursor(self):
        myCursor = self.connection.cursor()
        return myCursor

    def get_connection(self):
        return self.connection

if __name__ == "__main__":
    pyMysql = MysqlConnector(host="localhost", user="root", passwd="Your Password", auth_plugin="mysql_native_password")
    myCursor = pyMysql.createCursor()
    # myCursor.execute("CREATE DATABASE TestDatabase")
    myCursor.execute("SHOW DATABASES")
    for x in myCursor:
        print(x)
    myCursor.execute("USE TestDatabase")
    # myCursor.execute("CREATE TABLE Test (name VARCHAR(255), url VARCHAR(255))")
    myCursor.execute("SHOW TABLES")
    for x in myCursor:
        print(x)

这里我把mysql.connector稍稍做了一最简单的在封装方便自己使用

BaoStock

import baostock as bs
import pandas as pd

class BaostockRebuild():

    def __init__(self):
        #### 登陆系统 ####
        lg = bs.login()
        # 显示登陆返回信息
        if lg.error_msg == "success":
            print("登录成功")
            print('login respond error_code:' + lg.error_code)
            print('login respond  error_msg:' + lg.error_msg)
        else:
            print("登录错误")
            print('login respond error_code:' + lg.error_code)
            print('login respond  error_msg:' + lg.error_msg)

    def baostock_logout(self):
        bs.logout()

    def k_data_query(self,code, char, start_date, end_date, frequency, adjustflag):
        """
        获取某只标的的K线数据
        :param code: 标的代码 eg;"000001.SH"
        :param char: 需要下载的数据特征 eg 分钟线指标:date,time,code,open,high,low,close,volume,amount,adjustflag
                                        周月线指标:date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg
        :param start_date:  开始日期
        :param end_date:  结束日期
        :param frequency:  频率 数据类型,默认为d,日k线;d=日k线、w=周、m=月、5=5分钟、15=15分钟、30=30分钟、60=60分钟k线数据,
                            不区分大小写;指数没有分钟线数据;周线每周最后一个交易日才可以获取,月线每月最后一个交易日才可以获取。
        :param adjustflag:  复权类型,默认不复权:31:后复权;2:前复权。已支持分钟线、日线、周线、月线前后复权
        :return: result
        """
        rs = bs.query_history_k_data_plus(code,
                                          char,
                                          start_date=start_date
  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要在 macOS 上使用 Tushare 下载股票数据并将其保存MySQL 数据库中,需要遵循以下步骤: 1. 安装 Tushare 和 MySQL 驱动程序 在终端中使用 pip 命令安装 Tushare 和 MySQL 驱动程序: ``` pip install tushare pip install mysql-connector-python ``` 2. 连接 MySQL 数据库 使用以下代码连接到 MySQL 数据库: ```python import mysql.connector mydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="yourdatabase" ) ``` 请将 `yourusername`、`yourpassword` 和 `yourdatabase` 替换为您的 MySQL 数据库的用户名、密码和数据库名称。 3. 下载股票数据保存MySQL 使用 Tushare 下载股票数据并将其保存MySQL 数据库中。以下是一个示例代码,可以下载股票代码为 `000001`(平安银行)的所有历史交易数据并将其保存到名为 `stock_data` 的 MySQL 表中: ```python import tushare as ts import mysql.connector mydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="yourdatabase" ) mycursor = mydb.cursor() # 创建名为 stock_data 的表 mycursor.execute("CREATE TABLE IF NOT EXISTS stock_data (id INT AUTO_INCREMENT PRIMARY KEY, date DATE, open FLOAT, high FLOAT, low FLOAT, close FLOAT, volume FLOAT)") # 使用 Tushare 下载股票数据 df = ts.get_hist_data('000001') # 将数据保存MySQL 数据库中 for index, row in df.iterrows(): sql = "INSERT INTO stock_data (date, open, high, low, close, volume) VALUES (%s, %s, %s, %s, %s, %s)" val = (index.strftime('%Y-%m-%d'), row['open'], row['high'], row['low'], row['close'], row['volume']) mycursor.execute(sql, val) mydb.commit() ``` 这段代码将创建名为 `stock_data` 的表,并将历史交易数据保存到该表中。如果表已存在,则不会创建新表。 请注意,上面的代码仅下载股票代码为 `000001` 的历史交易数据。如果您想下载其他股票代码的数据,请将 `ts.get_hist_data('000001')` 中的 `000001` 替换为所需的股票代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值