Repository navigation
Releases
Releases · xbfighting/tdx2db
v0.5.0 — 换手率支持:股本/上市日期/真实名称入库
亮点
换手率一个 JOIN 搞定(closes #1):
SELECT d.date, d.volume / s.ltag AS turnover_pct
FROM daily_data d JOIN stock_info s ON RIGHT(s.code, 6) = d.code
WHERE d.code = '000001' ORDER BY d.date DESC LIMIT 20;volume(手)与 ltag(流通A股,万股)的单位差恰好抵消,结果直接是百分数。
新功能
- 股本/上市日期入库(464d239,#46,closes #1 #45):
stock_info新增zgb总股本 /ltag流通A股(万股)/capital_date股本更新日 /list_date上市日期,来自通达信本地 base.dbf,随盘后下载自动更新;list_date可直接用于次新股过滤 - stock_info.name 真实股票名称(b68f447,#43,closes #42):来自本地 infoharbor_ex.code,含退市名,ST/退市过滤可直接用库内名称;文件缺失/被锁回退占位符
修复与加固
- SMB 挂载下运行中的通达信锁定文件导致同步中断——名称读取降级不中断(3a70f04,#44)
- blocks 四条板块链统一"缺失/不可读/格式异常"单链降级,不吞其他链结果(464d239)
stock-list改为单事务快照替换:可重复运行刷新股本/名称,失败整体回滚保留旧快照
升级说明
- 老库执行一次
scripts/migrate_stock_info_capital.sql(ALTER ×4),然后tdx2db stock-list --db-only填充 - 股本为当前快照口径:股本变动点之前的历史换手率会失真,精确历史需自行结合 gbbq(详见 README FAQ)
v0.4.0 — 板块同步:行业/概念/指数/地区自动入库
亮点
`tdx2db sync` 现在自动同步板块-个股关系——行业(881 研究行业三级)、概念、指数(含中证500/1000 等跨市场指数成分)、地区、风格,全部来自通达信本地板块文件,随盘后数据下载自动更新。不再需要从通达信软件手工导出板块 CSV。
-- 全部二级行业(板块分析的常用口径)
SELECT DISTINCT block_name FROM block_stock_relation
WHERE block_type = '行业' AND block_level = 2;新功能
- blocks 命令(240dd6f,#40 #41,closes #39):四条本地文件数据链(infoharbor_block.dat / tdxhy.cfg×tdxzs3.cfg / spblock.dat / base.dbf),全量快照式写入
block_stock_relation(block_type + block_level + 可空 block_code);单事务替换,失败自动回滚保留旧快照;sync自动包含,status纳入统计 - Windows CI 矩阵 + 二进制解析回归测试(1eac346/280a699,#35 #38,closes #34):ubuntu+windows × 3 版本 Python;
.day/.lc5合成与真实文件切片双料 fixture - 文档(cd64147,#37,closes #36):README 定位与同类项目对比表;AGENTS.md 消费端复权指南
升级说明
- 老用户执行一次
scripts/migrate_block_relation.sql(该表此前从未有写入路径),或对已建新表的库补ALTER TABLE block_stock_relation ADD COLUMN block_level INTEGER - 板块名以 tdxzs.cfg 官方全名为准,与通达信软件导出 CSV 偶有变体,跨口径对齐用
block_code
数据验证:136,143 条关系与实际使用的导出 CSV 全量比对(行业 127/127、地区 32/32、概念 269/270、指数调仓后新名单),八项质量检查全绿。
v0.3.1 — 发布 PyPI:pip install tdx2db
亮点
tdx2db 现已发布到 PyPI:https://pypi.org/project/tdx2db/
pip install tdx2db # 默认支持 SQLite,零配置开箱即用
pip install 'tdx2db[postgres]' # PostgreSQL
pip install 'tdx2db[mysql]' # MySQL
pip install 'tdx2db[all]' # 全部驱动安装后直接使用 tdx2db sync,无需 clone 仓库。本 release 涵盖 v0.3.0 + v0.3.1 全部变更(v0.3.0 存在 .env 读取缺陷,请直接使用 0.3.1)。
新功能
pip install tdx2db+tdx2db命令行入口(3803608,#27):包目录src/改名tdx2db/,pyproject 迁移 PEP 621;数据库驱动改为可选依赖(extras),默认安装仅 SQLite,缺驱动时报错附带安装命令;python main.py老用法保持兼容tdx2db status命令(42b40b7,#29):只读查看每表行数/覆盖股票数/日期范围,支持--json;不需要 TDX_PATH;衍生分钟表覆盖缺口自动告警- Windows 路径自动探测(08c459e,#33):TDX_PATH 未配置时探测 C/D/E 盘常见安装目录(new_tdx/zd_zsone/tdx/new_jyplug),显式配置永远优先
- AI agent 支持(a2de4c0,#31):新增
AGENTS.md(schema/典型查询/陷阱清单)与 Claude Code skilltdx2db-query
Bug 修复
- SQLite 下第二次增量同步全部失败(
MAX(date)返回 TEXT 导致latest + timedelta崩溃),storage 层统一归一化为 datetime(3803608) - 分钟线衍生表(15/30/60)缺口无法通过增量重跑自愈——增量起点从只查 minute5 改为按表分别计算(42b40b7,closes #11)
- v0.3.1:pip 安装场景下工作目录的
.env被静默忽略(load_dotenv默认从 site-packages 向上查找),改为从当前工作目录向上查找(a2de4c0 / bd5956c)
升级说明
- 老用户(clone 运行)无需迁移,
python main.py sync用法不变 - 开发环境安装方式改为
pip install -e '.[all]'
v0.2.0 — 数据正确性修复 + 开源基础设施
首个正式 release。强烈建议所有老用户升级并重导数据,见下方数据完整性说明。
⚠️ 数据完整性:v0.2.0 之前导入的数据不完整
旧版本存在两个静默数据缺失 bug,如果你在此之前建库,建议升级后重跑:
python main.py stock-list --db-only # 重新同步股票列表(补科创板 688 / 创业板 301)
python main.py sync # 增量补齐缺失历史(幂等,不会产生重复)- 科创板 688 / 创业板 301 段被静默排除(#9):股票列表正则 bug,约 1070 只股票从未入库
- 新股全历史被静默过滤(#10、#12/#13):全表 MAX(date) 增量检测导致库里没有的股票被跳过;daily
--auto-start同类残留入口已在 #13 修复(改逐股票精确增量) - SQLite/MySQL 增量写入完全失效(#16/#17):pd.Timestamp 绑定错误导致数据实际写不进去,感谢 @jaden1q84 在 #6 的方案
防呆与安全
- 唯一约束内建进表模型,新用户零手动步骤;老库迁移脚本含 MySQL 版并附自检 SQL(#17)
- 数据库连接失败给中文可行动指引;DB_PORT 配错给明确错误(#19)
- storage 公开 API 表名/列名白名单补全;Actions 最小权限;移除 --db-password 参数;URL.create 拼接(#19)
易用性
--market可省略(从 code 自动推断);修复漏写时静默全市场同步(#25)- 日志降噪 ~3 万行 → 一条进度条 + 汇总行;失败率 >1% 退出码非 0,cron 可监控(#25)
--start-date连字符命名(旧拼写兼容);LOG_LEVEL / DB_BATCH_SIZE 配置真正生效(#25)- README 重排(表结构文档 / code 格式差异警告 / FAQ);新增 CONTRIBUTING 与 bug 模板(#23)
开源基础设施
- 补 MIT LICENSE 文件(此前 README 声明 MIT 但无文件)
- 提交 poetry.lock;Python 版本口径统一 >=3.9;移除 pyproject 中的镜像硬编码(#21)
- 测试套件从零到 35 个用例,CI 三矩阵(3.9/3.10/3.11)首次全绿(#15)
Full Changelog: https://github.com/xbfighting/tdx2db/commits/v0.2.0