# sql_to_fastapi_LLM_generator **Repository Path**: ncepu-bj/sql_to_fastapi_LLM_generator ## Basic Information - **Project Name**: sql_to_fastapi_LLM_generator - **Description**: 通过大模型来生成基于fastapi框架的标准RESTful风格的分层接口项目 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2025-08-27 - **Last Updated**: 2026-01-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SQL_To_FastAPI 一款基于大模型的企业级智能代码生成器
![Python](https://img.shields.io/badge/python-v3.9+-blue.svg) ![FastAPI](https://img.shields.io/badge/FastAPI-0.104+-green.svg) ![LLM](https://img.shields.io/badge/LLM-DeepSeek%20|%20千问%20|%20Kimi-red.svg) ![License](https://img.shields.io/badge/license-MIT-blue.svg) ![Status](https://img.shields.io/badge/状态-生产就绪-brightgreen.svg) **基于大语言模型的智能SQL转FastAPI代码生成器** *智能解析SQL数据库结构,智能理解和分析业务,生成企业级高质量的FastAPI RESTful API项目*
## 🎯 项目简介 本项目是一个基于大语言模型(LLM)的智能代码生成器,专门将企业数据库表结构SQL文件,转换为完整的企业级FastAPI RESTful API项目。生成的目标项目满足FastAPI框架的最佳实践,目标项目代码包含基本表的数据操作接口,真正能够开箱即用;代码符合企业级标准、并自动生成API文档; 企业可以在此目标项目基础上,快速增加完善业务逻辑和流程,快速部署上线生产环境。 ### 🛠️ 技术路线与实现策略 本项目包含**两个部分技术实现策略**,针对不同复杂度的代码生成需求采用最适合的技术方案: **🔧 1 基础代码部分 - 基础数据操作代码**: - **主要技术**:代码模板技术 - **适用场景**:基本表的CRUD数据操作接口代码生成 - **优势**:高效稳定,代码质量可控,适合标准化的数据操作逻辑 **🚀 2 务逻辑代码部分 - 智能代码生成**: - **主要技术**:大语言模型 + 提示词工程 + 上下文工程 + 轻量级模板技术 - **适用场景**:智能代码生成,基于大模型进行代码生成 - **核心技术**:大语言模型 + 提示词工程 + 上下文工程 + 轻量级模板技术 - **适用场景**:复杂业务逻辑代码、工作流程、业务规则处理 - **优势**:智能理解业务需求,生成个性化的复杂业务代码 这种**模板为主+LLM为辅**的混合技术架构,既保证了基础代码的稳定性和质量,又为未来复杂业务逻辑生成提供了强大的AI能力支撑。 ### ✨ 核心特性 - 🧠 **智能SQL解析**: 全面解析MySQL DDL,自动提取表结构、字段类型、约束关系等完整信息 - 📊 **完整业务代码生成**: 自动生成SQLAlchemy模型、Pydantic schemas、服务层和API路由层 - 🏗️ **企业级架构**: 标准三层架构,包含完整的异常处理、数据验证、事务管理和日志系统 - � **生产就绪**: 一键生成完整可运行的FastAPI项目,包含依赖管理和部署配置 - 🔍 **代码质量保障**: 内置语法验证、类型检查和最佳实践规范 - 🌏 **多数据库支持**: 支持MySQL、PostgreSQL等主流数据库 - 📦 **模块化设计**: 清晰的代码组织结构,易于扩展和维护 ### 🏗️ 系统架构 ``` SQL表结构 → 智能解析 → 模型生成 → 业务逻辑 → API路由 → 完整项目 ↓ ↓ ↓ ↓ ↓ ↓ DDL解析 表结构分析 ORM映射 服务层代码 RESTful API 可运行项目 ``` ## 🚀 快速开始 ### 环境要求 - Python 3.13+ - 支持的数据库:MySQL、PostgreSQL(更多数据库支持开发中) ### 安装步骤 1. **克隆项目** ```bash git clone https://github.com/your-repo/sql_to_fastapi_generator.git cd sql_to_fastapi_generator ``` 2. **创建虚拟环境** ```bash # 使用conda(推荐) conda create -n sql_to_fastapi python=3.13 conda activate sql_to_fastapi # 或使用venv python -m venv venv source venv/bin/activate # Linux/Mac # 或 venv\Scripts\activate # Windows ``` 3. **安装依赖** ```bash pip install -r requirements.txt ``` ### 基本使用 #### 方式一:交互式使用(推荐新手) 1. **准备SQL文件** ```sql -- 将你的MySQL DDL保存到 input/ 目录 -- 支持复杂表结构:外键关系、索引、约束等 -- 例如: input/my_database.sql -- 用户表 CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL UNIQUE, email VARCHAR(100) NOT NULL, password VARCHAR(255) NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME ON UPDATE CURRENT_TIMESTAMP ); -- 订单表(示例业务关系) CREATE TABLE orders ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, total_amount DECIMAL(10,2) NOT NULL, status ENUM('pending', 'paid', 'shipped', 'delivered') DEFAULT 'pending', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ); ``` > 字段插入兼容性与特殊处理说明 - JSON 字段:请传入对象类型(dict 或 list),不要传 JSON 字符串。示例:`{"extra": 1}` 应作为对象传递,而不是 `"{\"extra\":1}"`。将 JSON 作为字符串传入会导致 SQL 1064 语法错误(常见现象是 SQL 中出现额外的引号和转义符)。 - BLOB/BINARY/VARBINARY:请传入 `bytes/bytearray`,不要传普通字符串。示例:`b"hello"`。如需存文本请使用 `TEXT/VARCHAR`。 - BIT:长度为 1 的 BIT 字段建议使用布尔值(`True/False`、`"1"/"0"`);长度>1 的 BIT 字段请使用 `bytes` 或整型位串,例如 `b"\x01"`。 - SET:请传入列表(数组)形式,值必须属于 DDL 中定义的集合。示例:`["paid", "shipped"]`。系统会在入库时转换为逗号分隔字符串。 - ENUM:请传入枚举值的字符串,注意大小写需与定义一致。示例:`"pending"`。 - TIME:使用 `"HH:MM:SS"` 字符串,或 Python `datetime.time/timedelta` 对象。避免使用占位字符串 `"string"`。 - DATE/DATETIME/TIMESTAMP:传 Python `date/datetime` 或符合格式的字符串(如 `"YYYY-MM-DD"`、`"YYYY-MM-DD HH:MM:SS"`)。 - GEOMETRY/POINT:暂不支持直接插入,请传 `null` 或跳过该字段;如需存储,请在业务层按数据库要求构造 WKT/GeoJSON 后再入库。 - YEAR:建议传入四位年份整型(如 `2025`),不建议使用 `0` 作为占位。 - 默认占位值说明:示例请求中的 `"string"`、空列表 `[]`、`b""` 仅为占位,实际调用时需替换为符合类型的有效值。 - 常见 1064 错误排查:若在报错 SQL 中出现 `'{\"...\"}'` 等转义字符串,通常是将 JSON/二进制以字符串传入导致。请按上述类型规范修正。 示例(正确类型的插入载荷片段): ```json { "enum_field": "pending", "set_field": ["paid", "shipped"], "json_field": {"additionalProp1": {}}, "bit_field": true, "binary_field": "base64: aGVsbG8=", "time_field": "00:00:00", "point_field": null } ``` 2. **运行生成器** ```bash # 基本使用 - 交互式选择SQL文件 python start.py # 系统会自动检测input目录中的SQL文件并提供选择 ``` #### 方式二:参数化使用(推荐批处理和自动化) **🔧 支持的命令行参数:** | 参数 | 简写 | 说明 | 示例 | |------|------|------|------| | `--input` | `-i` | 指定SQL文件路径 | `-i "input/users.sql"` | | `--output-dir` | `-o` | 指定输出目录 | `-o "my_projects"` | | `--quiet` | `-q` | 静默模式(无控制台输出) | `-q` | | `--help` | `-h` | 显示帮助信息 | `-h` | **📋 使用示例:** ```bash # 1. 查看所有可用参数 python start.py --help # 2. 指定SQL文件生成项目 python start.py --input "input/my_database.sql" # 3. 指定SQL文件和输出目录 python start.py --input "input/users_orders.sql" --output-dir "projects/ecommerce" # 4. 静默模式生成(适合脚本调用) python start.py --input "input/blog.sql" --output-dir "output/blog_api" --quiet # 5. 使用相对路径 python start.py -i "./input/test_schema.sql" -o "./custom_output" # 6. 使用绝对路径 python start.py -i "D:/sql_files/company.sql" -o "D:/generated_projects" ``` **💡 参数化使用的优势:** - ✅ **批处理支持**:可以集成到构建脚本中 - ✅ **自动化友好**:支持CI/CD流水线调用 - ✅ **无交互运行**:适合服务器环境和脚本化场景 - ✅ **自定义输出**:可以指定任意输出目录 - ✅ **静默模式**:便于日志分析和错误处理 **🚨 注意事项:** - SQL文件必须存在且格式正确(支持 `.sql`, `.mysql`, `.ddl` 扩展名) - 输出目录会自动创建,如不存在系统将自动创建目录结构 - 项目名称自动使用SQL文件名(不包含扩展名) - 静默模式下仍会生成完整的日志文件到 `logs/` 目录 **📝 批处理脚本示例:** ```bash # Windows批处理脚本 (generate_all.bat) @echo off echo 正在生成用户管理系统... python start.py -i "schemas/users.sql" -o "projects/user_system" -q echo 正在生成订单管理系统... python start.py -i "schemas/orders.sql" -o "projects/order_system" -q echo 正在生成博客系统... python start.py -i "schemas/blog.sql" -o "projects/blog_system" -q echo 所有项目生成完成! ``` ```bash # Linux/Mac脚本 (generate_all.sh) #!/bin/bash echo "正在生成用户管理系统..." python start.py -i "schemas/users.sql" -o "projects/user_system" -q echo "正在生成订单管理系统..." python start.py -i "schemas/orders.sql" -o "projects/order_system" -q echo "正在生成博客系统..." python start.py -i "schemas/blog.sql" -o "projects/blog_system" -q echo "所有项目生成完成!" ``` 3. **查看生成结果** ``` output/generated_project/ ├── app/ │ ├── models/ # SQLAlchemy模型 (ORM映射) │ │ ├── __init__.py │ │ ├── user.py # 用户模型 │ │ └── order.py # 订单模型 │ ├── schemas/ # Pydantic数据模型 (API数据验证) │ │ ├── __init__.py │ │ ├── user.py # 用户数据模型 │ │ └── order.py # 订单数据模型 │ ├── services/ # 业务逻辑层 (服务类) │ │ ├── __init__.py │ │ ├── user_service.py # 用户业务逻辑 │ │ └── order_service.py # 订单业务逻辑 │ ├── api/ # FastAPI路由层 (API端点) │ │ ├── __init__.py │ │ ├── user.py # 用户API路由 │ │ └── order.py # 订单API路由 │ ├── core/ # 核心配置和工具 │ │ ├── config.py # 配置管理 │ │ ├── database.py # 数据库连接 │ │ └── exceptions.py # 异常处理 │ └── main.py # FastAPI应用入口 ├── requirements.txt # 项目依赖 ├── .env.example # 环境变量模板 ├── README.md # 项目说明 └── start.py # 项目启动脚本 ``` 4. **启动生成的项目** ```bash cd output/generated_project # 安装依赖 pip install -r requirements.txt # 配置数据库 cp .env.example .env # 编辑.env文件,配置数据库连接 # 本地运行请修改.env 文件中 HOST=0.0.0.0改为localhost # 启动应用 python start.py # 访问API文档: http://localhost:8000/docs ``` ## 📚 详细文档 - 🏗️ [系统架构设计](./docs/enterprise_architecture_design.md) - 完整的系统架构和设计原理 - � [使用指南](./docs/README.md) - 详细的使用说明和配置指南 - 🧪 [测试报告](./tests/TEST_REPORT.md) - 完整的测试结果和覆盖率报告 - 📝 [项目状态](./docs/PROJECT_STATUS.md) - 项目当前状态和开发计划 ## 🧪 测试与质量保证 ### 运行完整测试套件 ```bash # 运行所有测试 python -m pytest tests/ -v # 运行特定测试模块 python -m pytest tests/test_generation_engine.py -v # 生成引擎测试 python -m pytest tests/test_phase1_integration.py -v # 集成测试 # 运行覆盖率测试 python -m pytest tests/ --cov=src --cov-report=html ``` ### 🎯 测试覆盖范围 - **单元测试**: 所有核心模块的功能测试 - **集成测试**: 端到端生成流程测试 - **代码质量测试**: 生成代码的语法和质量验证 - **性能测试**: 大型项目生成性能基准测试 ## 🎨 项目技术亮点 ### 🧠 智能SQL解析引擎 - **完整DDL解析**: 支持复杂的MySQL DDL语句,包括表结构、约束、索引、外键关系 - **字段类型映射**: 智能映射SQL数据类型到Python/SQLAlchemy类型 - **业务语义识别**: 自动识别常见业务字段(ID、时间戳、状态字段等) - **关系分析**: 自动分析表间关系和外键依赖 ### 🎯 企业级代码生成 - **分层架构**: 严格的三层架构设计,模型层、服务层、API层职责清晰 - **代码质量**: 生成符合PEP8规范的高质量Python代码 - **类型安全**: 完整的类型注解,支持mypy静态类型检查 - **异常处理**: 完善的异常处理机制和错误信息 ## 🤝 参与贡献 我们欢迎所有形式的贡献,共同打造更好的智能代码生成工具! ### 🎯 贡献方式 1. 🐛 **报告Bug**: 在Issues中详细描述问题和复现步骤 2. 💡 **功能建议**: 提出新功能想法和改进建议 3. 📖 **改进文档**: 完善项目文档、添加使用示例 4. 💻 **代码贡献**: 提交Pull Request,改进核心功能 5. 🧪 **测试支持**: 编写测试用例,提高代码覆盖率 6. 🌍 **国际化**: 添加多语言支持和翻译 ### 🛠️ 开发流程 ```bash # 1. Fork本仓库到你的GitHub账号 # 2. 克隆你的Fork仓库 git clone https://github.com/your-username/sql_to_fastapi_LLM_generator.git cd sql_to_fastapi_LLM_generator # 3. 创建功能分支 git checkout -b feature/your-feature-name # 4. 配置开发环境 python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt pip install -r requirements-dev.txt # 开发依赖 # 5. 运行测试确保环境正常 python -m pytest tests/ -v # 6. 进行开发和测试 # ... 你的代码修改 ... # 7. 运行代码格式化和检查 black src/ tests/ isort src/ tests/ mypy src/ # 8. 提交更改 git add . git commit -m "Add: 你的功能描述" # 9. 推送到你的Fork仓库 git push origin feature/your-feature-name # 10. 创建Pull Request到主仓库 ``` ### 📋 贡献指南 - **代码规范**: 遵循PEP 8,使用Black格式化,添加类型注解 - **测试要求**: 新功能需要包含对应的测试用例 - **文档更新**: 重要功能需要更新相关文档 - **commit信息**: 使用清晰的commit message格式 - **兼容性**: 确保与Python 3.9+兼容 ### 🏆 贡献者认可 优秀贡献者将获得: - 项目README中的贡献者列表展示 - 特殊贡献者徽章 - 项目核心开发者邀请机会 ## 📜 许可证 本项目采用 [MIT 许可证](LICENSE)。 ### 🙏 致谢与支持 ### 🛠️ 开源技术栈 - **FastAPI** ⚡: 现代化的Python Web框架,高性能API开发首选 - **SQLAlchemy** 🗃️: 强大的Python ORM工具,数据库操作的艺术 - **Pydantic** ✅: 优雅的数据验证库,确保API数据质量 - **Jinja2** 📝: 灵活的模板引擎,支持高质量代码模板生成 ### 👥 社区贡献者 感谢所有为本项目贡献代码、文档、测试和建议的开发者们! ### 📞 技术支持与交流 - 📧 **邮箱支持**: [project@example.com](mailto:project@example.com) - 🐛 **Issue跟踪**: [GitHub Issues](https://github.com/your-repo/sql_to_fastapi_generator/issues) - 📖 **在线文档**: [项目Wiki](https://github.com/your-repo/sql_to_fastapi_generator/wiki) ---
**🌟 如果这个项目对你有帮助,请给我们一个Star!** ![GitHub stars](https://img.shields.io/github/stars/your-repo/sql_to_fastapi_generator?style=social) ![GitHub forks](https://img.shields.io/github/forks/your-repo/sql_to_fastapi_generator?style=social) ![GitHub watchers](https://img.shields.io/github/watchers/your-repo/sql_to_fastapi_generator?style=social) **Made with ❤️ by SQL to FastAPI Generator Team** *让智能代码生成更简单高效*