7.搭建个人金融数据库之快速获取股票列表和基本信息!
前边我们提过,免费的数据一般来自于爬虫,获取难度和维护成本都比较高,其实不太适合小白用户。所以非必要情况下,我们尽量不用这种方式来获取数据。

我自己用的比较多的是tushare,一般来说有它也就够了,大概500块钱就可以开通绝大多数常用的权限,很多时候我懒得自己写爬虫,实在是因为花费那么多时间去写脚本和维护,这些时间成本都远远不止500块了。
我们做量化,应该把最多的精力放到投研上,其他环节怎么方便、稳定怎么来。当然,有些数据可能tushare没有或者更新不及时,那么我们用爬虫来抓一下也是有必要的。
今天我们的目标是写一个脚本,把A股的股票列表和基本信息拿到,写入到我们的数据库中,然后再配置一个每天更新的定时任务。
一、获取股票基本信息
从交易所用爬虫抓取数据会比较麻烦,所以这里我们用tushare提供的数据接口来获取股票的基本信息。从下图可以看到,这里提供的信息已经是比较全了。

考虑我们是维护一个本地数据库长期来用,所以我们最好还是把所有字段都抓取下来。另外为了避免在回测时出现问题,我们把历史退市的股票也加进来。
如果你是第一次使用tushare,那么可以像我这样写代码。

然后我们打印出来看下数据情况。
可以看到,一共有5637行数据,有些公司在部分字段存在缺失,不过都被我们填充为空字符串了,不会影响我们往数据库里写入。

二、基本探查
首先我们可以看到A股历史上有286家退市股,目前仍有5351家公司在正常上市状态。

然后我们看到这里把所有仍在上市的公司划分到了111个行业中,其中公司数量最多的五个行业分别是电气设备、元器件、软件服务、专用机械和化工原料。

上市公司数量排名前五的省级地区分别是浙江、江苏、北京、广东和上海。南北差异可以说是极大了。

沪深主板股票数量最多,达到3173家,之后是创业板、科创板和北交所。

深交所股票2833家,上交所股票2266家,北交所252家。

有1434家股票是深港通标的,1342家股票是沪港通标的。

有2806家公司没有标识企业类型。除此之外,1459家民营企业占大头,地方国企594家其次。外资企业有194家,央企有125家。

三、创建数据表
我们连接上在前边几节课中创建好的MySQL实例,然后在命令行中执行如下语句,把数据表创建好。
这里我先创建了一个数据库叫stock_a,然后又在这个数据库下边创建了一张表叫ts_a_stock_list,用来存储我们刚才获取到的数据。

这里老Q用的是自己搭建的DBGate工具来执行SQL,大家也可以选择自己喜欢的工具,比如官方提供的MySQL WorkBench、Navicat等,也可以直接在命令行中执行。如果有不懂的朋友,可以留言或者私信咨询老Q。
实际上,我们在Python中也可以执行这个语句,但是为了不给大家引入新的困难,我们先不讲这个方式。
四、写入数据
这里我们要编写两个函数,分别用于获取MySQL连接对象以及向MySQL中写入数据。如果没有特殊要求,就用老Q的代码就行,只需要根据你的实际情况调整下MySQL的访问IP、端口以及用户和密码。
写函数之前我们记得先把用到的库给导入进来。



然后我们执行下述代码:

可以看到如下输出,这就代表写入成功了。

打开我们的数据库管理工具,也能看到的确有数据了,好了,第一次写入就搞定了,是不是还挺简单的?

五、写数据更新脚本
首先我们创建一个文件夹,起名叫tushare_data,用来存储所有我们获取tushare数据的脚本。
然后我们把刚才编写的get_mysql_con和write_to_db两个函数写入一个名为tools.py的文件中,这样以后我们就可以直接导入它来使用了,不需要每次都复制粘贴。然后我们再创建一个新的函数get_ts_api,用来获取token。

接下来我们在同一个目录下创建一个新的文件夹,起名叫stock_a,用来存储A股相关的数据脚本,然后在这个目录中创建一个Python文件,起名ts_a_stock_list.py,和我们的表名保持一致,这样未来会比较好管理。
然后我们在这个文件中写入如下代码,记得把数据库相关信息像上边一样结合自己实际情况调整。

六、配置定时任务
这里我以青龙面板为例,如果你的系统是Windows,可以参考上一节课的内容来配置。
我们按照如下顺序,把刚才提到的文件夹和脚本都创建好。

这里右上角有一些按钮,比如创建文件夹或脚本、编辑脚本等。我们把脚本创建完成后,点击调试。

点击运行,可以看到右侧的执行日志中打印出来了我们想要的结果,这代表我们的脚本执行成功了。点击退出回到上一个界面。

我们在首页点击定时任务,点击右上角创建任务,然后按照下图进行配置。我这里是指定了每周一到周五的晚上10点执行这个脚本来更新数据。

好了,我们已经成功获取了A股股票列表和基本信息数据并且存储到了数据库中,还配置了定时任务来定期更新。是不是没大家想象的那么复杂?
跟着老Q,我们一步步打开量化世界的大门!
相关文章:
7.搭建个人金融数据库之快速获取股票列表和基本信息!
前边我们提过,免费的数据一般来自于爬虫,获取难度和维护成本都比较高,其实不太适合小白用户。所以非必要情况下,我们尽量不用这种方式来获取数据。 我自己用的比较多的是tushare,一般来说有它也就够了,大…...
Nginx基础详解1(单体部署与集群部署、负载均衡、正反代理、nginx安装)
本阶段的任务 1.学会集群的操作概念 2.完成对Nginx的入门操作 3.使用Nginx实现集群和负载均衡 4.使用Nginx实现高可用的方案 目录 1.单体部署与集群部署 1.1单体部署的概念 1.2单体部署的优缺点 1.3集群部署的概念 1.4集群部署的优缺点 1.5集群部署需要注意的点 1.…...
等保一体机如何帮你应对网络攻击
等保一体机如何帮你应对网络攻击 在当今信息化时代,网络安全已成为企业和组织面临的重要挑战。随着网络攻击手段的不断升级,传统的安全防护措施已难以应对复杂多变的威胁。等保一体机作为一种集成化的安全防护解决方案,能够有效帮助企业应对…...
CVE-2024-1112 Resource Hacker 缓冲区溢出分析
漏洞简述 CVE-2024-1112 是 Resource Hacker 软件的一个缓冲区溢出漏洞。该漏洞存在于版本 3.6.0.92 中。由于软件在处理命令行中的文件路径时未对文件字符串长度进行限制,过长的字符串参数导致内存被过度写入,从而引发缓冲区溢出。 漏洞复现 构造长度…...
WebGL渲染与创建2D内容
目录 创建画布2D渲染修改顶点着色器光照深度测试混合模式WebGL是一个强大的工具,可以用来在Web浏览器中创建复杂的3D图形。虽然它的设计初衷是为了3D渲染,但也可以用于创建2D内容。通过巧妙地利用几何、投影和纹理,我们可以构建出各种2D图形。 创建画布 首先,我们需要在H…...
ArcGIS Desktop使用入门(三)图层右键工具——拓扑(下篇:地理数据库拓扑)
系列文章目录 ArcGIS Desktop使用入门(一)软件初认识 ArcGIS Desktop使用入门(二)常用工具条——标准工具 ArcGIS Desktop使用入门(二)常用工具条——编辑器 ArcGIS Desktop使用入门(二&#x…...
LeetCode题练习与总结:二叉树的最近公共祖先--236
一、题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也…...
uni-app 多环境配置
前后端分离模式下,不同的环境如开发环境(dev)、测试环境(test)、生产环境(prod)等,不同环境后端数据库、api地址等可能都不同 。 uni-app中只有development和production两个环境 以配…...
【d48】【Java】【力扣】LCR 123. 图书整理 I
思路 方法1:放进list,将list倒置,利用stream,将list改为int类型 方法2:递归:递归通用思路;明确每一层做什么确定返回值确定什么地方接收下层的返回值 每一层:调用下层,然后把自己…...
【MySQL】InnoDB 索引为什么使用B+树而不用跳表?
在MySQL中,为了加速查询,使用B树来构建索引,将查询性能从O(n)优化到O(log n)。虽然跳表同样提供O(log n)的查询效率并且实现相对简单,但B树更适合MySQL的索引使用,原因包括: B树和跳表的区别 B树和跳表的…...
【学习笔记】TLS/SSL握手之Records
TLS / SSL会话是由记录(Records)所组成,有4种records HandshakeAlertChange Cipher SpecApplication DataHandshake和Alert Records被分为子类型(Subtypes): Handshake:Client HelloHandshake&a…...
【MySQL】创建新账号新数据库并授权
在 MySQL 中创建一个名为 new_user 的用户,并设置密码为 new_pass,然后创建一个名为 new_db 的数据库,并将该数据库的所有权限授予 new_user 用户。 登录 MySQL: mysql -u root -p创建用户: CREATE USER new_userlo…...
Nginx反向代理简介,作用及配置;Nginx负载均衡简介,作用及配置;
一,Nginx反向代理 1.1简介 反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的…...
SAP MIGO M7146不支持移动原因
移动类型 Z91 查看配置:Z91 匹配的原因没有921 倒是Z92的原因里面有921 那解决方案有2种,但是要根据具体业务要求来 1、审视一下是否移动原因用错了 ?换一个移动原因 2、确实是这个移动类型 要用到这个移动原因 ,那就在上图 移…...
vue使用PDF.JS踩的坑--部署到服务器上显示pdf.mjs viewer.mjs找不到资源
之前项目使用的pdf.js 是2.15.349版本,最近换了一个4.6.82的版本,在本地上浏览文件运行的好好的,但是发布到服务器(IIS)上打不开文件,控制台提示找不到pdf.mjs viewer.mjs。 之前使用的2.15.349pdf和viewer…...
重型工程车辆数据集
重型工程车辆数据集,内含Bull_dozer(推土机), Dumb_truck(卡车), Excavator(挖掘机), Grader(平地机), Loader(转载机), Mobile_crane(…...
【Kubernetes】常见面试题汇总(三十三)
目录 85.简述 kube-proxy 的三种工作模式和原理。 特别说明: 题目 1-68 属于【Kubernetes】的常规概念题,即 “ 汇总(一)~(二十二)” 。 题目 69-113 属于【Kubernetes】的生产应用题。 85.简述 kub…...
ubuntu安装无线网卡驱动(非虚拟机版)
本文不是基于虚拟机,是双系统 太夸张了 实验室居然没网线 只有一个师兄留下来的无线网卡 装完了ubuntu结果没网 make都用不了 然后搜了下大概发现是没有预装gcc和make 参考如下 https://zhuanlan.zhihu.com/p/466440088 https://wwsk.lanzouj.com/iAj4t2ao46zc…...
保障电气安全的电气火灾监控系统主要组成有哪些?
电气火灾是什么? 电气火灾一般是指由于电气线路、用电设备、器具以及供配电设备出现故障性释放的热能:如高温、电弧、电火花以及非故障性释放的能量;如电热器具的炽热表面,在具备燃烧条件下引燃本体或其他可燃物而造成的火灾&…...
gitlab集成CI/CD,shell方式部署
目录 1.首先安装好gitlab和gitlab-runner,这两个,看我以往的教程 2.注册新的 Runner 3. 步骤 3.1 Enter the GitLab instance URL (for example, https://gitlab.com/): 3.2 Enter the registration token: 3.3 Enter a description for the runner: 3…...
OpenClaw家装设计:Qwen2.5-VL-7B根据户型图生成3D效果示意图
OpenClaw家装设计:Qwen2.5-VL-7B根据户型图生成3D效果示意图 1. 为什么选择OpenClaw做家装设计自动化 去年装修新房时,我花了大量时间在设计师和施工队之间来回沟通。每次修改设计方案都需要等待设计师重新出图,周期长、成本高。直到发现Op…...
汇智信科-机场数字孪生系统
机场数字孪生系统以数字化孪生技术构建机场全要素虚拟映射,精准还原机场、跑道、塔台等设施及飞机运行状态,支持多维度动态监测与可视化管控;通过模拟飞机调度、跑道滑行等全流程作业场景,覆盖机场多角色业务协同,同时…...
FLAC3D 6.0 和 7.0 版本输出塑形区体积及破坏区域体积那些事儿
FLAC3D输出塑形区体积,适用于6.0和7.0版本,输出剪切破坏区域,张拉破坏区域体积,如图2中所示在岩土工程数值模拟领域,FLAC3D 是一款相当强大的工具。今天咱就聊聊如何在 FLAC3D 6.0 和 7.0 版本中输出塑形区体积&#x…...
Pspice仿真新手避坑大全:为什么你的TL431仿真总报错?可能是模型库没加对
Pspice仿真新手避坑大全:为什么你的TL431仿真总报错? 刚接触Pspice的工程师们,是否经常遇到这样的场景:精心设计的TL431电路图明明检查了无数遍,点击仿真按钮后却弹出一堆令人困惑的错误提示?这就像拼好了乐…...
2026最权威的六大降重复率工具解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 飞速发展的人工智能技术,正深切地重塑着学术写作的范式,当下…...
Phi-4-mini-reasoning开发者调试手册:Chainlit后端日志定位、错误堆栈分析
Phi-4-mini-reasoning开发者调试手册:Chainlit后端日志定位、错误堆栈分析 1. 模型简介与部署验证 Phi-4-mini-reasoning 是一个基于合成数据构建的轻量级开源模型,专注于高质量、密集推理的数据,并进一步微调以提高更高级的数学推理能力。…...
C++高性能服务开发:忍者像素绘卷推理引擎封装
C高性能服务开发:忍者像素绘卷推理引擎封装 1. 为什么需要高性能推理引擎 在游戏开发领域,实时生成高质量像素艺术的需求正在快速增长。传统的预渲染方式无法满足玩家对个性化内容和动态场景的需求,而直接使用Python等脚本语言运行的AI模型…...
4大场景:如何用ReplaceItems脚本实现Illustrator批量设计元素智能替换
4大场景:如何用ReplaceItems脚本实现Illustrator批量设计元素智能替换 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 在UI设计和品牌视觉开发过程中,设计师…...
deepseek硬件电路实战:构建pA级电流测量系统的核心技术与工程实践
1. 从理论到实践:pA级电流测量的核心挑战 测量皮安级电流就像在暴风雨中听清一根针落地的声音。我十年前第一次尝试做这种高精度测量时,连示波器上全是噪声信号,根本分不清哪些是真实信号。pA级测量最核心的挑战在于,我们要测量的…...
ThinkPHP6(TP6)控制器404问题排查与Nginx伪静态配置指南
1. 为什么你的TP6控制器总是404? 最近帮朋友排查一个ThinkPHP6项目,明明控制器写得没问题,路由也配置了,但一访问就蹦出个404页面。这种问题在新手部署TP6时特别常见,尤其是用Nginx服务器的环境。我自己第一次用TP6时也…...
