PythonStock(34)使用AKShare 做股票数据出来,替换现有每日数据,job相关任务,制作基础镜像使用python3.7-slim-stretch,akshare使用 0.9.65 版本

105 篇文章 13 订阅
41 篇文章 314 订阅

前言


使用Python开发一个web股票项目。
【github项目地址】:
https://github.com/pythonstock/stock
【知乎专栏地址】:
https://zhuanlan.zhihu.com/pythonstock
【docker hub地址下载】:
https://hub.docker.com/r/pythonstock/pythonstock
【相关stock资料分类】:
http://blog.csdn.net/freewebsys/article/category/7076584
主要使用开发语言是python。
使用的lib库是pandas,tushare,TensorFlow,tornado等。

本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/117434589

1,关于AKShare 概览


AKShare 是基于 Python 的财经数据接口库, 目的是实现对股票、期货、期权、基金、外汇、债券、指数、加密货币等金融产品的基本面数据、实时和历史行情数据、衍生数据从数据采集、数据清洗到数据落地的一套工具, 主要用于学术研究目的.

风险提示:AKShare 开源财经数据接口库所采集的数据皆来自公开的数据源,不涉及任何个人隐私数据和非公开数据。 同时本项目提供的数据接口及相关数据仅用于学术研究,任何个人、机构及团体使用本项目的数据接口及相关数据请注意商业风险。

https://github.com/jindaxiang/akshare

2,安装lib库


    pip3 install akshare 
    apt-get install -y nodejs

akshare 依赖 nodejs,必须安装这个才可以。

#!/usr/local/bin/python3
# -*- coding: utf-8 -*-

import akshare as ak
print(ak.__version__)

可以打印版本就是正常了:
python test_akshare.py
0.6.10

3,股票数据接口


https://www.akshare.xyz/zh_CN/latest/tutorial.html

https://www.akshare.xyz/zh_CN/latest/data/stock/stock.html

股票相关接口调用方法:

实时行情,可以使用

# 实时行情数据
# 接口: stock_zh_a_spot
# 目标地址: http://vip.stock.finance.sina.com.cn/mkt/#hs_a
# 描述: A 股数据是从新浪财经获取的数据, 重复运行本函数会被新浪暂时封 IP, 建议增加时间间隔
# 限量: 单次返回所有 A 股上市公司的实时行情数据

stock_zh_a_spot_df = ak.stock_zh_a_spot()
print(stock_zh_a_spot_df)

# 插入到 MySQL 数据库中
common.insert_db(stock_zh_a_spot_df, "stock_zh_a_spot", True, "`symbol`")

但是历史行情使用函数。

TypeError: stock_zh_a_daily() got an unexpected keyword argument 'start_date'

# 报这个错误信息:发现日期参数不管用,直接去掉才可以,python3.6的只支持0.6.10 版本的。
# 需要升级到 python3.7 才可以。

# 历史行情数据
# 日频率
# 接口: stock_zh_a_daily
# 目标地址: https://finance.sina.com.cn/realstock/company/sh600006/nc.shtml(示例)
# 描述: A 股数据是从新浪财经获取的数据, 历史数据按日频率更新; 注意其中的 sh689009 为 CDR, 请 通过 stock_zh_a_cdr_daily 接口获取
# 限量: 单次返回指定 A 股上市公司指定日期间的历史行情日频率数据
# adjust=""; 默认为空: 返回不复权的数据; qfq: 返回前复权后的数据; hfq: 返回后复权后的数据;

stock_zh_a_daily_qfq_df = ak.stock_zh_a_daily(symbol="sz000002", adjust="")
print(stock_zh_a_daily_qfq_df)

# 升级 python3.7 之后,再安装 akshare 就可以支持按照日期查询数据了。
stock_zh_a_daily_qfq_df = ak.stock_zh_a_daily(symbol="sz000002", start_date="20200101", end_date="20210101", adjust="")
print(stock_zh_a_daily_qfq_df)

3,总结


发现 akshare 要求升级python 3.7 以上版本才可以,需要升级基础镜像。
然后 akshare 就可以升级到 0.9.65 的最新版本了。
新版本就可以按照日期进行查询,解决 TypeError: stock_zh_a_daily() got an unexpected keyword argument ‘start_date’ 这个问题了。

折腾几天终于把这个 stock_zh_a_daily 调用通了。可以按照日期进行查询了。
同时代码也提交到了github 上。

https://github.com/pythonstock/stock/commit/d4da492606fb3f5543303cacb9aa85153e670fd7

本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/117434589

博主地址是:https://blog.csdn.net/freewebsys

你可以使用PyQt5中的QLineEdit和QTableView来实现宽度固定的列表可输入数据改变长度的窗口。 首先,你需要创建一个QLineEdit和一个QTableView,并将它们添加到主窗口中。然后,你需要创建一个QStandardItemModel,并将其设置为QTableView的模型。接下来,你需要使用QStandardItemModel的方法来设置表格中的行数和列数,并将每个单元格的值设置为一个空字符串。 最后,你需要连接QLineEdit的textChanged信号到一个槽函数中,该槽函数将根据QLineEdit中的文本内容来动态改变QTableView的列数。在槽函数中,你需要使用QStandardItemModel的方法来更新表格的列数,并将每个新添加的单元格的值设置为一个空字符串。 下面是一个示例代码,可以帮助你了解如何使用PyQt5来实现宽度固定的列表可输入数据改变长度的窗口。请注意,这只是一个基础的示例,你可能需要根据你的具体需求进行修改。 ```python from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QLineEdit, QPushButton, QTableView, QAbstractItemView, QStandardItemModel, QHeaderView from PyQt5.QtGui import QStandardItem class MainWindow(QMainWindow): def __init__(self): super().__init__() # 创建主窗口 self.setGeometry(100, 100, 500, 500) self.setWindowTitle("List Window") # 创建主窗口中的部件 self.central_widget = QWidget() self.setCentralWidget(self.central_widget) self.line_edit = QLineEdit() self.table_view = QTableView() # 创建布局管理器 self.layout = QVBoxLayout() self.central_widget.setLayout(self.layout) # 添加部件到布局管理器中 self.layout.addWidget(self.line_edit) self.layout.addWidget(self.table_view) # 创建表格模型 self.model = QStandardItemModel() self.table_view.setModel(self.model) # 设置表格属性 self.table_view.setEditTriggers(QAbstractItemView.DoubleClicked | QAbstractItemView.SelectedClicked) self.table_view.setSelectionBehavior(QAbstractItemView.SelectRows) self.table_view.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) # 连接信号和槽 self.line_edit.textChanged.connect(self.update_table) # 初始化表格 self.update_table('') def update_table(self, text): # 获取列数 column_count = len(text) # 设置表格列数 self.model.setColumnCount(column_count) # 设置表格行数为1 self.model.setRowCount(1) # 添加新的单元格 for i in range(column_count): item = QStandardItem('') self.model.setItem(0, i, item) if __name__ == '__main__': app = QApplication([]) window = MainWindow() window.show() app.exec_() ``` 在这个示例代码中,我们创建了一个QLineEdit和一个QTableView,并将它们添加到一个垂直布局中。我们还创建了一个QStandardItemModel,并将其设置为QTableView的模型。然后,我们将QLineEdit的textChanged信号连接到update_table函数中,该函数将根据QLineEdit中的文本内容来动态改变QTableView的列数。在update_table函数中,我们使用QStandardItemModel的方法来更新表格的列数,并将每个新添加的单元格的值设置为一个空字符串。最后,我们在主函数中创建了一个QApplication对象和一个MainWindow对象,并将MainWindow对象显示出来。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值