基于 DeepSeek 大模型的自然语言转 SQL 查询系统,覆盖 59 张高校信息化规划表,支持自然语言输入自动生成 SQL 语句。
为河南省教育厅高校数据填报提供智能问答能力。用户用自然语言描述查询需求(如「统计各学院国家奖学金发放总额」),系统自动分析 59 张规划表的字段结构,调用 DeepSeek 生成可执行的 SQL 查询语句。
自然语言输入
│
▼
┌──────────────┐ ┌─────────────────┐ ┌────────────────┐
│ SchemaManager │───▶│ SQLGenerator │───▶│ DeepSeek API │
│ (59张表Schema) │ │ (NL → Prompt) │ │ (SQL生成) │
└──────────────┘ └─────────────────┘ └────────────────┘
│
▼
┌──────────────┐
│ SQL 输出 │
└──────────────┘
| 业务系统 | 表数量 | 示例表 |
|---|---|---|
| 教务系统 | 5 | 学生基本信息、成绩、毕业生、学籍异动、教学任务 |
| 学工系统 | 13 | 各类奖学金/助学金发放、困难生信息、入伍资助等 |
| 财务系统 | 6 | 科目、凭证、余额、辅助信息等 |
| 科研项目管理系统 | 5 | 纵向/横向项目、成员、收入、支出 |
| 一卡通系统 | 4 | 卡户、商户、交易流水、补助圈存 |
| 人事系统 | 3 | 教职工信息、薪酬发放、岗位聘任 |
| 校园交通管理系统 | 3 | 车辆登记、出入记录、收费记录 |
| 资产管理系统 | 2 | 资产管理、资产出租 |
| 其他系统 | 18 | 图书、采购、招生、就业、宿舍、基建、出国、公车、继教等 |
- Python 3.11+
- DeepSeek API Key
pip install -r requirements.txt
# 或手动安装:pip install requests python-dotenv openpyxl编辑项目根目录下的 .env 文件:
DEEPSEEK_API_KEY=your-api-key-here
python main.py交互式菜单:
============================================================
🎓 高校智能问数平台 - AI SQL Generator
Powered by DeepSeek | 59张规划表
============================================================
主菜单
1. 🔍 自然语言查询 → SQL
2. 📝 生成测试用例 (NL-SQL对)
3. 📚 查看所有表结构
4. 🧪 批量测试
5. 🚪 退出
🔍 请输入查询需求 > 统计各个学院的学生人数
📊 涉及的表: 6_教务系统_学生基本信息表
📝 生成的SQL:
SELECT [学院名称], COUNT(*) AS 学生人数
FROM [6_教务系统_学生基本信息表]
GROUP BY [学院名称]
ORDER BY 学生人数 DESC;
| 文件 | 说明 |
|---|---|
config.py |
全局配置:API Key、模型参数、文件路径 |
schema_manager.py |
Schema 管理器:加载/搜索/格式化 59 张表的字段信息 |
sql_generator.py |
SQL 生成引擎:构造 Prompt 并调用 DeepSeek API |
test_generator.py |
测试用例生成器:用 DeepSeek 批量生成 NL-SQL 测试对 |
main.py |
CLI 主程序:交互式查询、测试生成、批量验证 |
extract_schemas.py |
Schema 提取脚本:从 Excel 样表自动解析字段结构(路径基于脚本目录,可整体迁移) |
generate_tests.py |
测试用例生成脚本:独立运行批量生成 NL-SQL 测试对(等价于 CLI 菜单选项 2) |
validate_tests.py |
测试用例批量验证脚本:逐条调用模型校验 test_pairs.json |
test_queries.py |
示例查询脚本:内置 4 条样例,快速验证 SQL 生成效果 |
table_schemas.json |
59 张表的完整 Schema(由 extract_schemas.py 自动提取) |
test_pairs.json |
自然语言-SQL 测试用例集(当前 276 对) |
requirements.txt |
Python 依赖清单(requests / python-dotenv / openpyxl) |
附件:59张规划表填报样表.../ |
教育厅 59 张规划表 Excel 样表,extract_schemas.py 的数据来源 |
test_pairs.json 包含 276 个自然语言-SQL 测试对:
| 难度 | 数量 | 占比 |
|---|---|---|
| 简单 | 100 | 36% |
| 中等 | 143 | 52% |
| 困难 | 33 | 12% |
覆盖单表查询、多表 JOIN(最高 4 表关联)、聚合、分组、排序、子查询等 SQL 场景。
# 方式一:通过 CLI 交互式菜单选项 2
python main.py
# 方式二:直接运行生成脚本
python generate_tests.pypython validate_tests.py- 生成的 SQL 使用 SQLite 语法,中文字段名用方括号
[]包裹 - 尚无实际数据库,SQL 仅供格式参考和后续建表使用
- DeepSeek API 调用有速率限制,批量生成测试用例时内置了间隔延时
.env中的 API Key 不会提交到版本控制
- 使用
requests直接调用 DeepSeek API,避免 OpenAI 库的 URL 拼接与版本兼容问题 - 通过
dotenv管理 API Key,支持.env文件覆盖系统环境变量 - 59 张 Excel 表格的字段结构由
openpyxl自动解析提取 - SQL 生成 Prompt 采用紧凑 Schema 格式,确保在 Token 限制内覆盖全部 59 张表