用 SOLO 打造声明式 SQLite 测试数据生成工具

一行代码,数万行数据。零配置智能生成,AI 驱动精准调优。


一、摘要

用 TRAE SOLO 开发了 sqlseed —— 一个声明式 SQLite 测试数据生成工具。只需一行代码,即可为数据库生成十万级高质量测试数据。支持 9 级智能列推断、自动外键维护、流式内存安全、AI 智能配置等特性。项目从零开始,历经 50+ 次提交迭代,最终形成完整的工具包,包含核心引擎、CLI、插件系统、MCP 服务器等模块。


二、背景

我是一名后端开发者,在日常开发和测试中,经常需要为 SQLite 数据库填充大量测试数据。传统方式要么手写 SQL 脚本(繁琐且难以维护),要么使用硬编码的 fixtures(扩展性差),要么使用 Faker/Mimesis 等库逐列配置(工作量大)。

我希望有一个工具能够:

  • 零配置:自动推断列类型,智能选择生成器

  • 自动维护外键:多表关联时自动处理依赖顺序

  • 高性能:支持百万级数据生成,内存占用恒定

  • AI 增强:利用 LLM 分析 Schema 语义,自动生成配置

于是,我决定用 SOLO 从零开始打造这个工具。


三、实践过程

3.1 开发时间线(基于 Git 历史)

整个项目历时约 3 周,经历了以下关键阶段:

阶段 内容
阶段一 核心引擎开发:DataOrchestrator、ColumnMapper(9级策略链)、DatabaseAdapter、DataProvider Protocol
阶段二 插件系统:基于 pluggy 实现 11 个 Hook 点,支持 Provider 注册、批次插入、模板池等扩展
阶段三 列 DAG 与表达式引擎:支持派生列计算(derive_from)、唯一性约束回溯求解、超时保护
阶段四 AI 插件开发:SchemaAnalyzer、AiConfigRefiner(自纠正闭环)、Few-shot 示例库
阶段五 MCP 服务器集成:让 Claude 等 AI 助手直接操作 sqlseed,实现 inspect_schema、generate_yaml、execute_fill
阶段六 优化与加固:安全加固、代码质量提升、性能优化、文档完善

3.2 典型开发场景:我是如何与 SOLO 协作的

场景一:设计 9 级列推断策略链

问题:如何让工具自动识别列的语义,选择合适的生成器?比如列名是 email 就生成邮箱,列名是 created_at 就生成时间戳。

给 SOLO 的提示

“我需要设计一个列映射策略,能够根据列名、类型、约束等信息自动选择数据生成器。要求:1)支持精确匹配(如 email → 邮箱生成器);2)支持模式匹配(如 *_at → 时间戳);3)支持类型回退;4)可扩展。请帮我设计策略链的架构。”

SOLO 的输出:设计了一个 9 级策略链:精确匹配 → 模式匹配 → 类型推断 → 默认回退。每一级都有明确的优先级和匹配规则。

我的调整:在 SOLO 的基础上,我补充了 74 条精确匹配规则(从最初的 68 条扩展),并添加了 UNIQUE 约束的特殊处理逻辑。


场景二:实现流式数据生成,解决内存溢出问题

问题:一次性生成 100 万行数据时,内存直接爆了。

给 SOLO 的提示

“我需要生成 100 万行测试数据,但一次性加载到内存会 OOM。请帮我设计一个流式生成方案,要求:1)内存占用恒定;2)支持批量写入;3)可中断恢复。”

SOLO 的输出:设计了 DataStream 类,基于 Iterator[list[dict]] 实现,逐批 yield 数据。配合 PragmaOptimizer 三级写入优化,根据数据量自动切换 LIGHT/MODERATE/AGGRESSIVE 策略。

结果:100 万行数据内存占用与 1000 行相同,写入速度达到 42,735 rows/s


场景三:外键约束导致插入失败

问题:多表关联时,子表先插入导致外键违规。

给 SOLO 的提示

“我有多个表之间存在外键依赖,填充数据时经常出现 FK 违规错误。请帮我设计一个自动检测依赖并按正确顺序填充的方案。”

SOLO 的输出:实现了 RelationResolver,通过拓扑排序自动检测表依赖关系。同时设计了 SharedPool 机制,跨表共享值池,维持引用完整性。

结果:零配置自动维护外键完整性,用户无需关心填充顺序。


3.3 踩坑与解决

坑一:UNIQUE 约束耗尽导致死循环

当列设置了 UNIQUE 约束且生成器参数空间有限时(如 pattern: "PRJ-\\d{6}" 只有 100 万种可能),生成到后期会频繁冲突,甚至死循环。

解决:让 SOLO 帮我实现了 UniqueAdjuster,自动检测生成器参数空间,动态调整 max_length 等参数。同时添加了超时保护和重试次数限制。


坑二:表达式引擎安全风险

派生列支持表达式计算(如 value[-8:]),但如果用户传入恶意表达式(如 __import__('os').system('rm -rf /')),后果严重。

解决:使用 simpleeval 库,禁用 importexec、文件 I/O 等危险操作,并添加 5 秒超时保护。


坑三:AI 插件返回无效配置

LLM 有时会返回无效的配置(如引用不存在的生成器类型)。

解决:设计了 AiConfigRefiner 自纠正闭环:自动检测配置错误,向 LLM 发送修正请求,最多 3 轮重试。


四、成果展示

4.1 项目链接

平台 链接 说明
GitHub GitHub - sunbos/sqlseed: 声明式 SQLite 测试数据生成工具包 · GitHub 主仓库,50+ commits
PyPI (sqlseed) Client Challenge 核心包 v0.1.15
PyPI (sqlseed-ai) Client Challenge AI 插件
PyPI (mcp-server-sqlseed) https://pypi.org/project/mcp-server-sqlseed/ MCP 服务器

# 安装核心包
pip install sqlseed

# 安装 AI 插件
pip install sqlseed-ai

# 安装 MCP 服务器
pip install mcp-server-sqlseed

# 一键安装全部
pip install sqlseed[all] sqlseed-ai mcp-server-sqlseed[ai]


4.2 文档与示例

资源 链接 说明
架构图 docs/architecture.md 系统架构、核心流程、9级策略链等 Mermaid 图
Jupyter 教程 examples/notebooks/ 10 个交互式教程 Notebook
中文文档 README.zh-CN.md 完整中文使用指南


:light_bulb: 架构图包含:系统架构图、核心编排流程、9级策略链、生成器架构、数据库层架构、列依赖 DAG、AI 插件架构、插件生命周期、配置模型层级等 9 张 Mermaid 图!


4.3 核心功能一览

功能 说明
零配置智能生成 自动推断 Schema,9 级策略链选择最佳生成器
31 种生成器 string, integer, float, email, phone, name, datetime, pattern, foreign_key 等
流式内存安全 DataStream 逐批 yield,100 万行内存占用恒定
自动外键维护 拓扑排序 + SharedPool,零配置维持引用完整性
表达式引擎 支持派生列计算,21 个内置函数,超时保护
AI 智能配置 LLM 分析 Schema,自动生成 YAML 配置,支持自纠正
MCP 服务器 让 Claude 等 AI 助手直接操作 sqlseed
插件系统 基于 pluggy,11 个 Hook 点,支持自定义 Provider

4.3 一行代码示例


import sqlseed
result = sqlseed.fill("test.db", table="users", count=100000)
print(result)
# → GenerationResult(table=users, count=100000, elapsed=2.34s, speed=42735 rows/s)


五、效果与总结

5.1 TRAE SOLO 使用数据(来自 Dashboard)

在开发 sqlseed 的过程中,TRAE SOLO 是我最重要的开发伙伴。以下是我的真实使用数据:

指标 数据
TRAE IDE 使用天数 308 天
代码采纳次数 368 次
其中 Python 147 次(40%)
其中 Markdown(文档) 139 次(38%)
其中 JSON(配置) 58 次(16%)
对话次数 239 次(全部通过智能体)

常用智能体

  • :robot: SOLO Coder — 核心代码生成(主力)

  • :magnifying_glass_tilted_left: Code Review Summary — 代码审查与优化建议

  • :wrench: Refactor Incrementer — 增量重构

常用模型:glm-5.1、glm-4.7、DeepSeek-V4-Pro


:light_bulb: 从数据可以看出,Python 代码生成和 Markdown 文档撰写几乎各占一半,这说明 SOLO 不仅帮我写代码,还帮我写了大量的 README、CHANGELOG、教程等文档。239 次对话全部通过智能体完成,体现了 SOLO 作为 AI 编程助手的深度整合能力。


5.2 提效数据

  • 原本手写测试数据脚本:2-4 小时

  • 使用 sqlseed:5 分钟(含配置)

  • 提效:95%+


5.3 SOLO 在我流程中的作用

  • 架构设计:帮助我拆解复杂问题,设计模块化方案(如 9 级策略链、DataStream 流式架构)

  • 代码生成:368 次代码采纳,快速生成样板代码,让我专注于核心逻辑

  • 问题排查:帮我分析 bug 原因(如 UNIQUE 约束死循环、FK 违规),提供解决方案

  • 文档撰写:139 次 Markdown 生成,帮我写了 README、CHANGELOG、教程等

  • 代码审查:通过 Code Review Summary 智能体,持续优化代码质量

  • 增量重构:通过 Refactor Incrementer 智能体,安全地进行大规模重构


5.4 可复用方法

  1. 先设计再编码:让 SOLO 帮你设计架构,再逐步实现

  2. 分阶段迭代:不要一次性完成所有功能,按模块逐步推进

  3. 踩坑即文档:遇到问题就记录下来,这些是最好的素材

  4. 测试驱动:让 SOLO 帮你写测试,保证代码质量

  5. 善用智能体组合:SOLO Coder 写代码 + Code Review 审查 + Refactor 重构,形成完整开发闭环


5.5 后续规划

  • 支持更多数据库:PostgreSQL、MySQL

  • 可视化配置界面

  • 更强大的 AI 分析能力


感谢 SOLO,让开发效率起飞! :rocket: