最近在下载数据的时候发现很多原来免费的数据库现在都开始收费了,于是就想写个小程序把数据保存到本地,一开始想保存到CSV里,但是想起好久没用的mysql的知识都生疏了,正好写个小DEMO练练手。
前期准备
- 在本地安装Mysql (安装方法请百度 菜鸟教程 Mysql)
- 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: 复权类型,默认不复权:3;1:后复权;2:前复权。已支持分钟线、日线、周线、月线前后复权
:return: result
"""
rs = bs.query_history_k_data_plus(code,
char,
start_date=start_date