# data-generator **Repository Path**: ai-on-cloud/data-generator ## Basic Information - **Project Name**: data-generator - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-25 - **Last Updated**: 2025-07-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README python3 -m venv path/to/venv source path/to/venv/bin/activate python3 -m pip install xyz python -m venv .env source .env/bin/activate python -m pip install -r requirements.txt # 数据生成API 基于Python 3.13和FastAPI 0.115.13实现的数据生成API,支持根据数据库表结构生成定制化的INSERT SQL语句。现在包含现代化的React前端界面。 ## 功能特性 ### 1. 动态数据库连接 - 支持页面输入数据库连接信息 - 支持MySQL 5.7和8.0版本 - 实时连接状态检查 - 安全的连接管理 ### 2. 表结构读取 - 自动读取数据库表结构 - 获取字段类型、注释等信息 - 支持多种数据库类型 ### 3. 数据类型支持 - **字符串类型** - 固定字符串 - 随机内容 - 随机长度区间 - 固定前缀固定长度 - 填充字符范围 - 时间格式 - 流水号 - **枚举类型** - 从字段注释提取 - 手动输入枚举值 - **日期/时间类型** - 默认当前日期/时间 - 固定值 - 范围内随机 - 顺序递增 - 递增步长 - **数字类型** - 固定值 - 范围内随机 - 顺序递增 - 递增步长 ### 4. 数据预览功能 - 支持预览1-5条样本数据 - 实时验证字段配置 - 可视化数据生成结果 ### 5. 数据输出 - 1000条以内:返回JSON数据 - 1000条以上:返回INSERT SQL语句 - 支持数据下载功能 ## 技术栈 ### 后端 - **Python 3.13**: 主要编程语言 - **FastAPI 0.115.13**: Web框架 - **SQLAlchemy**: 数据库ORM - **Faker**: 假数据生成 - **Pydantic**: 数据验证 ### 前端 - **React 18**: 前端框架 - **Ant Design**: UI组件库 - **Axios**: HTTP客户端 - **Day.js**: 日期处理 ## 快速开始 ### 方法一:一键启动(推荐) 1. **克隆项目** ```bash git clone cd data-generator ``` 2. **一键启动前后端** ```bash # Windows start.bat # Linux/Mac ./start.sh ``` ### 方法二:使用Docker(推荐) 1. **克隆项目** ```bash git clone cd data-generator ``` 2. **启动服务** ```bash docker-compose up -d ``` 3. **访问服务** - 前端界面:http://localhost:3000 - 后端API:http://localhost:8000 - API文档:http://localhost:8000/docs ### 方法三:本地安装 #### 后端启动 1. **安装Python依赖** ```bash cd backend pip install -r requirements.txt ``` 2. **启动后端服务** ```bash # Windows run.bat # Linux/Mac cd backend python start.py ``` #### 前端启动 1. **安装Node.js依赖** ```bash cd frontend npm install ``` 2. **启动前端服务** ```bash # Windows start_frontend.bat # Linux/Mac npm start ``` 3. **访问服务** - 后端API:http://localhost:8000 - 前端界面:http://localhost:3000 - API文档:http://localhost:8000/docs ## 使用流程 ### 1. 连接数据库 在React前端界面中: 1. 选择MySQL版本(5.7或8.0) 2. 输入数据库连接信息: - 主机地址 - 端口 - 数据库名 - 用户名 - 密码 3. 点击"连接数据库"按钮 ### 2. 选择数据表 连接成功后,系统会自动加载数据库中的表列表,点击选择要生成数据的表。 ### 3. 配置字段生成规则 为每个字段配置数据生成规则: - 选择数据类型(字符串、数字、日期时间、枚举) - 根据数据类型配置具体参数 - 点击"预览"按钮查看1-5条样本数据 ### 4. 生成数据 设置生成数量,点击"生成数据"按钮即可生成数据。 ## 项目结构 ``` data-generator/ ├── backend/ # 后端代码 │ ├── main.py # FastAPI主程序 │ ├── models.py # 数据模型 │ ├── data_generator.py # 数据生成逻辑 │ ├── config.py # 配置文件 │ ├── start.py # 启动脚本 │ ├── requirements.txt # Python依赖 │ ├── create_test_tables.sql # 测试表创建脚本 │ └── Dockerfile # 后端Docker配置 ├── frontend/ # React前端代码 │ ├── public/ # 静态文件 │ ├── src/ # 源代码 │ │ ├── components/ # React组件 │ │ ├── services/ # API服务 │ │ ├── App.jsx # 主应用 │ │ └── index.jsx # 入口文件 │ ├── package.json # Node.js配置 │ ├── Dockerfile # 前端Docker配置 │ └── nginx.conf # Nginx配置 ├── start.bat # 一键启动脚本(前后端) ├── start.sh # Linux/Mac一键启动脚本 ├── run.bat # 后端启动脚本 ├── start_frontend.bat # 前端启动脚本 ├── docker-compose.yml # Docker Compose配置 └── README.md # 项目文档 ``` ## API使用 ### 1. 连接数据库 ```bash POST /connect ``` **请求参数说明:** ```json { "db_type": "mysql", // 数据库类型:mysql 或 postgresql "host": "localhost", // 数据库主机地址 "port": 3306, // 数据库端口号 "username": "root", // 数据库用户名 "password": "password", // 数据库密码 "database": "test_db", // 数据库名称 "mysql_version": "8.0" // MySQL版本:5.7 或 8.0(仅MySQL需要) } ``` **响应参数说明:** ```json { "success": true, // 连接是否成功 "message": "数据库连接成功", // 连接结果消息 "db_type": "mysql", // 数据库类型 "host": "localhost", // 主机地址 "port": 3306, // 端口号 "database": "test_db" // 数据库名称 } ``` ### 2. 检查连接状态 ```bash GET /connection/status ``` **响应参数说明:** ```json { "connected": true, // 是否已连接数据库 "message": "数据库连接正常" // 连接状态描述 } ``` ### 3. 获取所有表 ```bash GET /tables ``` **响应参数说明:** ```json { "tables": [ // 表列表 { "name": "users", // 表名 "columns": [ // 列信息 { "name": "id", // 列名 "type": "int", // 数据类型 "nullable": false, // 是否可为空 "default": null, // 默认值 "comment": "用户ID" // 列注释 } ] } ] } ``` ### 4. 获取指定表信息 ```bash GET /tables/{table_name} ``` **路径参数:** - `table_name`: 表名 **响应参数说明:** ```json { "name": "users", // 表名 "columns": [ // 列信息列表 { "name": "id", // 列名 "type": "int", // 数据类型 "nullable": false, // 是否可为空 "default": null, // 默认值 "comment": "用户ID" // 列注释 } ] } ``` ### 5. 预览字段数据 ```bash POST /preview ``` **请求参数说明:** ```json { "table_name": "users", // 表名 "column_name": "name", // 字段名 "config": { // 字段配置 "type": "string", // 数据类型:string, number, datetime, enum "min_length": 5, // 最小长度(字符串类型) "max_length": 20 // 最大长度(字符串类型) }, "count": 5 // 预览数据条数(1-5条) } ``` **响应参数说明:** ```json { "success": true, // 预览是否成功 "preview_data": [ // 预览数据列表 "张三", "李四", "王五" ], "message": "预览成功" // 预览结果消息 } ``` ### 6. 生成数据 ```bash POST /generate ``` **请求参数说明:** ```json { "table_name": "users", // 表名 "count": 100, // 生成数据条数(1-10000) "columns": { // 字段配置字典 "id": { // 字段名 "type": "number", // 数据类型:string, number, datetime, enum "min_value": 1, // 最小值(数字类型) "max_value": 1000 // 最大值(数字类型) }, "name": { // 字段名 "type": "string", // 数据类型 "min_length": 3, // 最小长度(字符串类型) "max_length": 10 // 最大长度(字符串类型) }, "email": { // 字段名 "type": "string", // 数据类型 "min_length": 10, // 最小长度 "max_length": 30 // 最大长度 }, "created_at": { // 字段名 "type": "datetime", // 数据类型 "start_date": "2020-01-01", // 开始日期 "end_date": "2024-12-31" // 结束日期 } } } ``` **响应参数说明:** ```json { "success": true, // 生成是否成功 "message": "成功生成100条数据", // 生成结果消息 "data": [ // 生成的数据(1000条以内返回JSON) { "id": 1, // 字段值 "name": "张三", // 字段值 "email": "zhangsan@example.com", // 字段值 "created_at": "2023-01-15 10:30:00" // 字段值 } ], "sql": null // 生成的SQL语句(1000条以上返回SQL) } ``` ### 7. 服务健康检查 ```bash GET /health ``` **响应参数说明:** ```json { "status": "healthy", // 服务状态:healthy 或 unhealthy "timestamp": "2024-01-01T12:00:00Z", // 检查时间戳 "version": "1.0.0" // API版本号 } ``` ## 配置示例 ### 字符串配置示例 1. **随机字符串** ```json { "type": "string", // 数据类型:字符串 "min_length": 5, // 最小长度:5个字符 "max_length": 20 // 最大长度:20个字符 } ``` 2. **固定长度字符串** ```json { "type": "string", // 数据类型:字符串 "min_length": 10, // 最小长度:10个字符 "max_length": 10 // 最大长度:10个字符(固定长度) } ``` 3. **固定值字符串** ```json { "type": "string", // 数据类型:字符串 "fixed_value": "测试数据" // 固定值:所有生成的数据都是"测试数据" } ``` 4. **带前缀的字符串** ```json { "type": "string", // 数据类型:字符串 "prefix": "USER_", // 前缀:所有数据都以"USER_"开头 "length": 15 // 总长度:15个字符(前缀+随机字符) } ``` ### 数字配置示例 1. **随机数字** ```json { "type": "number", // 数据类型:数字 "min_value": 1, // 最小值:1 "max_value": 1000 // 最大值:1000 } ``` 2. **固定范围数字** ```json { "type": "number", // 数据类型:数字 "min_value": 100, // 最小值:100 "max_value": 999 // 最大值:999 } ``` 3. **顺序递增数字** ```json { "type": "number", // 数据类型:数字 "start_value": 1, // 起始值:1 "increment_step": 2 // 递增步长:每次+2(1,3,5,7...) } ``` 4. **固定值数字** ```json { "type": "number", // 数据类型:数字 "fixed_value": 100 // 固定值:所有生成的数据都是100 } ``` ### 日期时间配置示例 1. **随机日期** ```json { "type": "datetime", // 数据类型:日期时间 "start_date": "2020-01-01", // 开始日期:2020年1月1日 "end_date": "2024-12-31" // 结束日期:2024年12月31日 } ``` 2. **当前时间** ```json { "type": "datetime", // 数据类型:日期时间 "current": true // 使用当前时间:所有数据都是生成时的当前时间 } ``` 3. **顺序递增时间** ```json { "type": "datetime", // 数据类型:日期时间 "start_datetime": "2024-01-01 00:00:00", // 开始时间 "increment_step": 3600 // 递增步长:3600秒(1小时) } ``` 4. **自定义格式日期** ```json { "type": "datetime", // 数据类型:日期时间 "start_date": "2024-01-01", // 开始日期 "end_date": "2024-12-31", // 结束日期 "date_format": "%Y年%m月%d日" // 日期格式:2024年01月01日 } ``` ### 枚举配置示例 1. **手动枚举值** ```json { "type": "enum", // 数据类型:枚举 "values": [ // 枚举值列表 "选项1", // 枚举值1 "选项2", // 枚举值2 "选项3" // 枚举值3 ] } ``` 2. **从字段注释提取枚举** ```json { "type": "enum", // 数据类型:枚举 "comment": "状态:启用,禁用,暂停" // 从字段注释中提取枚举值 } ``` - 固定值 { "config": { "column_name": "str", "type": "DateTime", "value_type": "FIX_VALUE", "value": "2025-01-01" }, "count": 3 } - 字符串 - 固定长度 - 完全随机 { "config": { "column_name": "string", "type": "String", "value_type": "FULL_RANDOM", "value": "[xxx][prefix][format]", "str_prefix": "string", "str_format": "%Y-%m-%d %H:%M:%S", "range": { "start": "10000000", "end": "1000000000", "step": 0 }, "length": 3 }, "count": 5 } - 数字 范围内随机/递增 { "config": { "column_name": "string", "type": "Number", "value_type": "RANGE_INCREASE", "value": "[xxx][prefix][format]", "str_prefix": "string", "str_format": "%Y-%m-%d %H:%M:%S", "range": { "start": "10000000", "end": "1000000000", "step": 10 }, "length": 3 }, "count": 5 } - 日期/时间 范围内随机/递增 { "config": { "column_name": "string", "type": "DateTime", "value_type": "RANGE_RANDOM", "value": "[xxx][prefix][format]", "str_prefix": "string", "str_format": "%Y-%m-%d %H:%M:%S", "range": { "start": "10000000", "end": "1000000000", "step": 10 }, "length": 3 }, "count": 5 } ### 字段类型说明 | 字段类型 | 说明 | 适用场景 | |---------|------|----------| | `string` | 字符串类型 | 姓名、地址、描述、邮箱等文本数据 | | `number` | 数字类型 | ID、年龄、价格、数量等数值数据 | | `datetime` | 日期时间类型 | 创建时间、更新时间、生日等时间数据 | | `enum` | 枚举类型 | 状态、类型、分类等固定选项数据 | ### 特殊配置说明 - **固定值**:所有生成的数据都使用相同的值 - **随机范围**:在指定范围内随机生成数据 - **顺序递增**:从起始值开始,按步长递增 - **前缀/后缀**:在随机数据前后添加固定字符 - **自定义格式**:指定日期时间、数字的显示格式 ## 开发说明 ### 后端开发 - 使用FastAPI框架 - 支持热重载开发 - 完整的API文档自动生成 ### 前端开发 - 使用React 18和Ant Design - 支持热重载开发 - 响应式设计 ### 数据库支持 - MySQL 5.7和8.0 - PostgreSQL(计划中) ## 故障排除 ### 常见问题 1. **数据库连接失败** - 检查数据库服务是否启动 - 验证连接信息是否正确 - 确认MySQL版本是否为5.7或8.0 2. **前端无法连接后端** - 确认后端服务在8000端口运行 - 检查CORS配置 - 查看浏览器控制台错误信息 3. **数据生成失败** - 检查字段配置是否正确 - 验证表结构是否存在 - 查看后端日志错误信息 ### 调试模式 1. **后端调试** ```bash cd backend python -m uvicorn main:app --reload --host 0.0.0.0 --port 8000 ``` 2. **前端调试** ```bash cd frontend npm start ``` ## 贡献指南 1. Fork项目 2. 创建功能分支 3. 提交更改 4. 创建Pull Request ## 许可证 MIT License