搭建自己的金融数据源和量化分析平台(五):更新两市退市股票信息
在前面的股票列表设计中,我们有一个list_status字段,可能的值为L上市 D退市 P暂停上市。
由于股票可能会被退市,因此需要该字段来维护上市状态。
深市爬虫:
# 读取深交所最新退市股票列表
def get_delisted_stock_list():cache_file_path = "./SZ_delisted_sotck_file.xlsx"url = "https://www.szse.cn/api/report/ShowReport?SHOWTYPE=xlsx&CATALOGID=1793_ssgs&TABKEY=tab2"response = requests.get(url)open(cache_file_path, "wb").write(response.content)file = pd.read_excel(cache_file_path, dtype={'证券代码': str})stocks = []for index, row in file.iterrows():# 处理每一行的数据stocks.append(row)os.remove(cache_file_path)return stocks
沪市爬虫:
# 读取上交所最新退市股票列表
def get_delisted_stock_list():cache_file_path = "./SH_delisted_sotck_file.xls"url = "https://query.sse.com.cn//sseQuery/commonExcelDd.do?sqlId=COMMON_SSE_CP_GPJCTPZ_GPLB_ZZGP_L&type=inParams&STOCK_CODE=®_PROVINCE=&STOCK_TYPE=1,2&COMPANY_STATUS=3"headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3','Referer': 'https://www.sse.com.cn/','Connection': 'close'}response = requests.get(url=url, headers=headers)open(cache_file_path, "wb").write(response.content)file = pd.read_excel(cache_file_path, dtype={'原公司代码': str})stocks = []for index, row in file.iterrows():# 处理每一行的数据stocks.append(row)os.remove(cache_file_path)return stocks
控制模块的更新代码:
# 根据退市公司信息更新股票列表
def update_A_delisted_stock(SZ=False,SH=False,BJ=False):database = "stock_a"if SZ == True:select_sql = "select * from stock_list where exchange = 'SZSE'"update_sql = "update stock_list set stock_name=%s,province=%s,industry=%s,industry_2=%s,enname=%s,market=%s,exchange=%s,list_status=%s,list_date=%s,delist_date=%s,total_share=%s,float_share=%s where stock_code=%s"select_result = ExecSelect(database, select_sql) # 读取查询结果# 读取深交所退市公司信息delisted_stocks = A_SZ_basic.get_delisted_stock_list()update_rows = []for stock in select_result:# 遍历查询股票是否在退市股票列表中for delisted_stock in delisted_stocks:if stock[0] == delisted_stock["证券代码"]:update_rows.append((delisted_stock["证券简称"], stock[2], stock[3], stock[4], stock[5], stock[6], stock[7],DELISTED, stock[9], delisted_stock["终止上市日期"], stock[11], stock[12], stock[0]))break# 更新数据库中存在的股票信息if len(update_rows) > 0:result = ExecInsert(database, update_sql, update_rows)if result == 'success':print("更新深交所退市股票成功.")else:raise CustomException("更新深交所退市股票时发生数据库异常:" + result)print("深交所退市股票更新结束.")if SH == True:select_sql = "select * from stock_list where exchange = 'SSE'"update_sql = "update stock_list set stock_name=%s,province=%s,industry=%s,industry_2=%s,enname=%s,market=%s,exchange=%s,list_status=%s,list_date=%s,delist_date=%s,total_share=%s,float_share=%s where stock_code=%s"select_result = ExecSelect(database, select_sql) # 读取查询结果# 读取上交所退市公司信息delisted_stocks = A_SH_basic.get_delisted_stock_list()update_rows = []for stock in select_result:# 遍历查询股票是否在退市股票列表中for delisted_stock in delisted_stocks:if stock[0] == delisted_stock["原公司代码"]:delite_date_str = str(delisted_stock["终止上市日期"])delist_date = delite_date_str[0:4]+"-"+delite_date_str[4:6]+"-"+delite_date_str[6:8]update_rows.append((delisted_stock["原公司简称"], stock[2], stock[3], stock[4], stock[5], stock[6], stock[7],DELISTED, stock[9], delist_date, stock[11], stock[12], stock[0]))break# 更新数据库中存在的股票信息if len(update_rows) > 0:result = ExecInsert(database, update_sql, update_rows)if result == 'success':print("更新上交所退市股票成功.")else:raise CustomException("更新上交所退市股票时发生数据库异常:" + result)print("上交所退市股票更新结束.")if BJ == True:pass
相关文章:
搭建自己的金融数据源和量化分析平台(五):更新两市退市股票信息
在前面的股票列表设计中,我们有一个list_status字段,可能的值为L上市 D退市 P暂停上市。 由于股票可能会被退市,因此需要该字段来维护上市状态。 深市爬虫: # 读取深交所最新退市股票列表 def get_delisted_stock_list():cache_f…...
Redis复习总结
之前写的博客太杂,最近想把Redis的知识点再系统的过一遍,带着自己的理解使用简短的话把一些问题总结一下,尤其是开发中和面试中的高频问题,基础知识点参考–>Redis入门、Spring Cache,这篇不再赘述。 目录 基础简介;与Memcached的区别;为什么作为mysql缓存?如何保证R…...
基于JSP的医院挂号系统
你好,我是专注于医疗信息系统的计算机专业毕业生。如果您对医院挂号系统感兴趣或有相关需求,欢迎随时联系我。 开发语言:Java 数据库:MySQL 技术:JSP技术 工具:MyEclipse 系统展示 首页 管理员功能模…...
Chainlit快速实现AI对话应用1 分钟内实现聊天数据的持久化保存
概述 默认情况下,Chainlit 应用不会保留其生成的聊天和元素。即网页一刷新,所有的聊天记录,页面上的所有聊天记录都会消失。但是,存储和利用这些数据的能力可能是您的项目或组织的重要组成部分。 一旦启用,数据持久性…...
STM32DMA数据传输
我估计大多数人学这么久连听说都没听说过DMA,更不用提知道它是干嘛的。其实DMA的本质就是一个数据的搬运工。平常的时候当我们没有配置的时候,一直都是CPU在搬运数据,但是这个活又累又没有技术含量,所以DMA的重要性还是有的。 目…...
Python学习笔记50:游戏篇之外星人入侵(十一)
前言 本篇文章接着之前的内容,继续对游戏功能进行优化,主要是优化游戏状态以及对应的处理。 状态 一个游戏包含多种状态,这个状态是一个可以很复杂也可以很简单的内容。条件所限,我们这个游戏的状态就比较简单: 未…...
vue3踩坑问题记录
//vue3element-plus //1、placeholder换行显示 const startTxt ref() const contentText ref<any>() startTxt.value "请描述问题内容、例如:" historyData.prompt.forEach((el:any)>{contentText.value \n${el.question}}) <ElInputv-mo…...
Python 爬虫实战:Scrapy 框架详解与应用
🛠️ Scrapy 框架基本使用 Scrapy 是一个强大的 Python 爬虫框架,提供了用于提取和处理网页数据的功能。以下是 Scrapy 的基本使用步骤: 安装 Scrapy pip install scrapy创建 Scrapy 项目 scrapy startproject myproject这将生成一个基础…...
60 函数参数——关键参数
关键参数主要指调用函数时的参数传递方式,与函数定义无关。 通过关键参数可以按参数名字传递值,明确指定哪个值传递给哪个参数,实参顺序可以和形参顺序不一致,但不影响参数值的传递结果,避免了用户需要牢记参数位置和…...
wps 最新 2019 专业版 下载安装教程,解锁全部功能,免费领取
文章目录 前言软件介绍软件下载安装步骤激活步骤小福利(安卓APP)软件介绍软件下载安装步骤 前言 本篇文章主要针对WPS2019专业版的安装下载进行详细讲解,软件已激活,可放心使用;并且可以进行账号登录,进行…...
前端(三):Ajax
一、Ajax Asynchronous JavaScript And XML,简称Ajax,是异步的JavaScript和XML。 作用:数据交换,通过Ajax可以给服务器发送请求,并获取服务器响应的数据。异步交互:可以在不重新加载整个页面的情况下&…...
启动 /使用/关闭 Redis 服务器
1. Linux 启动 Linux 系统启动 Redis 有两种方法,分别是前台启动,后台启动,两者各有差异; (1)前台启动 首先,需要进入 bin 路径(安装路径不同输入的命令也不同); 个人的命令(一般…...
Linux系统中的高级SELinux安全策略定制技术
随着信息技术的发展,计算机系统的安全性变得越来越重要。在开源世界中,Linux作为一种广泛应用的操作系统,其安全性一直备受关注。其中,SELinux(Security-Enhanced Linux)作为Linux系统中的一个安全模块&…...
使用 Ansible Blocks 进行错误处理
注:机翻,未校。 How to Use Ansible Blocks Make your Playbooks more readable and maintainable using Blocks feature in Ansible. 使用 Ansible 中的块功能使 Playbook 更具可读性和可维护性。 Jul 15, 2024 — LHB Community How to Use Ansible…...
java中的静态变量和实例变量的区别
java中的静态变量和实例变量的区别 在Java中,静态变量(也称为类变量)和实例变量是两种不同类型的变量,它们在多个方面存在显著的区别。以下是它们之间的一些主要区别: 存储位置 静态变量:存储在方法区&am…...
【Effecutive C++】条款02 尽量以const, enum, inline替换 #define
Prefer consts, enums, and inline to #define. 这个条款或许改为“宁可以编译器替换预处理器”比较好,因为或许#define不被视为语言的一部分。那正是它的问题所在。当你做出这样的事情: #define ASPECT_RATIO 1.653记号名称ASPECT_RATIO也许从未被编译…...
leetcode-226. 翻转二叉树
题目描述 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2: 输入:root [2,1,3] 输出:[2,3,1]…...
用的到linux-tomcat端口占用排查-Day5
前言: 最近使用tomcat搭建了一套测试环境的应用,整个搭建过程也很简单,就是将部署包上传至服务器☞解压☞启动tomcat服务器,当然服务器也是成功启动了,但是发现前端应用报404,具体如下图所示。 一、现象及思…...
mqtt协议详解(0)初步认识mqtt
文章目录 1. 介绍2. 主要特性3. 架构1. 介绍 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种构建在TCP/IP协议之上的轻量级、基于发布-订阅模式的消息传输协议,适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境,例如IOT。 MQTT 协议于 1…...
Java语言程序设计基础篇_编程练习题*16.7 (设置时钟的时间)
*16.7 (设置时钟的时间) 编写一个程序,显示一个时钟,并通过在三个文本域中输入小时、分钟和秒 钟来设置时钟的时间,如图16-38b 所示。使用程序清单14-21的ClockPane改变时钟大小使其居于面板中央 习题思路 实例化一个ClockPane(在程序清单1…...
亚马逊,TEMU平台针对电动泵美国站的UL778标准
UL778是电动泵的安全标准,主要用于规范在日常使用场景下的潜水或非潜水电泵的安全性能,确保产品在北美市场的准入合规 。一、适用产品范围以下类型的电泵通常适用于UL778标准:潜水泵:电机可完全浸入水中运行的泵。非潜水…...
Python AI服务上线倒计时:Cuvil预编译缓存机制如何帮你抢在竞品前24小时完成vLLM兼容升级?
第一章:Cuvil编译器在Python AI推理中的定位与价值Cuvil编译器是一个面向AI推理场景的轻量级、Python原生友好的编译框架,专为优化动态图模型(如PyTorch TorchScript子集、ONNX子图及自定义算子图)在CPU/GPU边缘设备上的执行效率而…...
Pixel Language Portal应用场景深度挖掘:支持波斯语/梵文的学术文献跨维翻译工作流
Pixel Language Portal应用场景深度挖掘:支持波斯语/梵文的学术文献跨维翻译工作流 1. 学术翻译的新范式 在全球化知识共享的背景下,学术研究者经常面临古老语言文献的翻译难题。传统翻译工具对波斯语、梵文等特殊语种支持有限,更难以处理学…...
Sonic云真机平台二次开发指南:自定义插件与扩展开发
Sonic云真机平台二次开发指南:自定义插件与扩展开发 【免费下载链接】sonic-server 🎉Back end of Sonic cloud real machine platform. Sonic云真机平台后端服务。 项目地址: https://gitcode.com/gh_mirrors/so/sonic-server Sonic云真机平台是…...
智能车竞赛新手避坑指南:用MT9V03X摄像头搞定直道、弯道与十字路口识别
智能车竞赛新手避坑指南:MT9V03X摄像头实战技巧 第一次参加全国大学生智能汽车竞赛时,我盯着赛道图像发呆了整整三天——那些看似简单的黑白线条在代码里变成了难以捉摸的数据迷宫。直到比赛前一周,我们的车还在十字路口反复"迷路"…...
即时通讯安全篇(十六):对称加密 vs 非对称加密?一文搞懂
本文由vivo 互联网服务器团队Deng Qian分享,有排版和内容优化。 1、引言 在了解加密原理前,我们来看看这样一个故事: 小红和小明是情侣,一天,小红给小明发短信说:“亲爱的,我银行卡上没有钱了…...
模拟解析:宽度数组 `[1,2,1]`,10个条目的 XRef 流
文章目录 模拟解析:宽度数组 [1,2,1],10个条目的 XRef 流一、设定场景二、解析代码核心部分(与之前相同)三、逐条解析(模拟 CPU 执行)辅助函数 GetVarInt 回顾条目0 (j0, objnum0)条目1 (j1, objnum1)条目2…...
手把手搭建LoRa智慧农业系统:土壤传感器+网关配置全流程(附Python数据采集代码)
手把手搭建LoRa智慧农业系统:土壤传感器网关配置全流程(附Python数据采集代码) 在传统农业向数字化转型的浪潮中,低功耗广域网络(LPWAN)技术正成为连接田间地头的"神经末梢"。想象一下࿱…...
打破模态边界:跨模态LLM工程师的前沿技术与就业前景
LLM数据技术人(模型的“燃料补给官”) 关键工作: 模型模型训练离不开高质量数据,数据技术人的关键就是搭建从数据采集到模型模型训练的全流程管道,包括清洗非结构化数据、设计标注体系、优化特征工程等。例如为电商推荐…...
Qwen3-0.6B-FP8部署教程:利用vLLM提升推理速度,Chainlit美化交互
Qwen3-0.6B-FP8部署教程:利用vLLM提升推理速度,Chainlit美化交互 1. 环境准备与快速部署 1.1 硬件与系统要求 显卡:NVIDIA GPU(RTX 3060 6GB起步,推荐RTX 4090/3090)驱动:NVIDIA Driver ≥ 5…...
