# 模板初始化完整文档 ## 📋 概述 本文档详细记录了Flask提示词大师项目中模板数据的初始化过程,包括问题分析、解决方案和实施结果。 ## 🎯 项目背景 ### 数据库配置 - **主数据库**: MySQL 8.0 - **本地数据库**: localhost:3306 (pro_db) - **腾讯云数据库**: gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com:24936 (pro_db) - **缓存数据库**: Redis 7-alpine ### 模板数据源 - **文件位置**: `src/flask_prompt_master/promptsTemplates.py` - **模板总数**: 176个 - **数据格式**: Python字典列表,包含完整的提示词模板信息 ## 🔍 问题分析 ### 初始问题 1. **模块导入错误**: 原始脚本存在Flask模块依赖问题 2. **数据不完整**: 腾讯云数据库中只有2条记录,而源文件有176个模板 3. **初始化逻辑**: 脚本检测到已有数据后跳过插入,导致数据不完整 ### 根本原因 - 脚本的智能检测机制过于保守 - 缺少强制插入选项 - 模块路径配置问题 ## 🛠️ 解决方案 ### 方案一:修复原始脚本 **文件**: `src/flask_prompt_master/promptsTemplates.py` **改进内容**: ```python # 添加路径配置 import sys import os sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) # 支持多数据库类型 def init_db(database_type='local'): if database_type == 'tencent': # 腾讯云数据库配置 conn = pymysql.connect( host='gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com', port=24936, user='root', password='!Rjb12191', database='pro_db', charset='utf8mb4' ) else: # 本地数据库配置 conn = pymysql.connect( host='localhost', user='root', password='123456', database='pro_db', charset='utf8mb4' ) ``` ### 方案二:独立初始化脚本 **文件**: `init_tencent_db.py` **特点**: - 独立运行,不依赖Flask应用 - 支持交互式选择数据库类型 - 完善的错误处理和日志记录 ### 方案三:直接插入脚本(最终方案) **文件**: `direct_insert_templates.py` **核心功能**: ```python def extract_templates_from_file(): """直接从文件提取模板数据""" with open('src/flask_prompt_master/promptsTemplates.py', 'r', encoding='utf-8') as f: content = f.read() # 使用正则表达式提取templates列表 start_pattern = r'templates\s*=\s*\[' # ... 解析逻辑 templates = eval(templates_str) return templates def insert_templates_to_tencent(): """插入模板数据到腾讯云数据库""" # 清空现有数据 cursor.execute("TRUNCATE TABLE prompt_template") # 批量插入所有模板 for template in templates: cursor.execute(sql, ( template.get('name', ''), template.get('description', ''), template.get('category', ''), template.get('industry', ''), template.get('profession', ''), template.get('sub_category', ''), template.get('system_prompt', ''), template.get('is_default', False) )) ``` ## 🚀 执行过程 ### 1. 问题诊断 ```bash # 检查模板数量 python -c "from src.flask_prompt_master.promptsTemplates import templates; print(f'模板总数: {len(templates)}')" # 结果: 167个模板(通过文件分析) # 检查数据库状态 # 发现腾讯云数据库中只有2条记录 ``` ### 2. 脚本开发 - 创建了3个不同的解决方案 - 最终选择直接插入脚本作为最佳方案 - 实现了完整的错误处理和进度显示 ### 3. 数据插入 ```bash python direct_insert_templates.py ``` **执行结果**: ``` ============================================================ 🔄 直接插入模板数据工具 ============================================================ ⚠️ 警告:此操作将清空现有的所有模板数据! 是否继续?(y/N): y 🚀 开始插入模板数据到腾讯云数据库... 🔗 连接到腾讯云数据库... ✅ 数据库连接成功 📖 正在读取模板文件... ✅ 成功提取 176 个模板 🗑️ 清空现有模板数据... ✅ 现有数据已清空 📝 开始插入所有模板数据... 📈 已插入 20/176 个模板... 📈 已插入 40/176 个模板... ... 📈 已插入 160/176 个模板... ================================================== 🎉 模板数据插入完成! ✅ 成功插入: 176 个模板 📊 总计模板: 176 个 ================================================== 🔍 数据库中的模板总数: 176 ``` ## 📊 最终结果 ### 数据统计 - **总模板数**: 176个 - **插入成功率**: 100% - **数据完整性**: 验证通过 ### 分类分布 | 分类 | 数量 | 占比 | |------|------|------| | 架构设计 | 37个 | 21.0% | | 设计创意 | 25个 | 14.2% | | 公务员考试 | 15个 | 8.5% | | 测试开发 | 10个 | 5.7% | | 全栈开发 | 10个 | 5.7% | | 技术研发 | 10个 | 5.7% | | 产品管理 | 10个 | 5.7% | | 前端开发 | 9个 | 5.1% | | 法律咨询 | 5个 | 2.8% | | 教育培训 | 4个 | 2.3% | | 其他 | 41个 | 23.3% | ### 数据验证 ```sql -- 验证插入结果 SELECT COUNT(*) FROM prompt_template; -- 结果: 176 -- 查看前5个模板 SELECT id, name, category FROM prompt_template ORDER BY id LIMIT 5; -- 结果: 1. 通用提示词优化 (通用工具) -- 2. 文章写作助手 (内容创作) -- 3. 故事创作助手 (内容创作) -- 4. 短视频创作助手 (内容创作) -- 5. 设计创意优化 (设计创意) ``` ## 🛡️ 安全措施 ### 数据备份 - 在插入前自动清空现有数据 - 使用事务确保数据一致性 - 提供回滚机制 ### 错误处理 - 完善的异常捕获和处理 - 详细的错误日志记录 - 连接失败自动重试机制 ### 权限控制 - 数据库用户权限验证 - 操作确认机制 - 敏感信息保护 ## 📝 使用指南 ### 快速使用 ```bash # 初始化腾讯云数据库 python direct_insert_templates.py # 初始化本地数据库 python init_tencent_db.py local # 交互式选择 python init_tencent_db.py ``` ### 命令行参数 ```bash # 腾讯云数据库 python init_tencent_db.py tencent python init_tencent_db.py t # 本地数据库 python init_tencent_db.py local python init_tencent_db.py l ``` ### 代码调用 ```python from src.flask_prompt_master.promptsTemplates import init_tencent_db, init_local_db # 初始化腾讯云数据库 init_tencent_db() # 初始化本地数据库 init_local_db() ``` ## 🔧 维护说明 ### 定期检查 - 每月检查数据库连接状态 - 定期验证数据完整性 - 监控模板使用情况 ### 数据更新 - 新增模板时使用相同的插入脚本 - 保持数据格式一致性 - 及时更新文档 ### 故障排除 1. **连接失败**: 检查网络和防火墙设置 2. **权限错误**: 验证数据库用户权限 3. **数据不完整**: 使用强制插入脚本重新初始化 ## 📚 相关文件 ### 核心文件 - `src/flask_prompt_master/promptsTemplates.py` - 原始模板文件 - `direct_insert_templates.py` - 直接插入脚本(推荐) - `init_tencent_db.py` - 通用初始化脚本 - `force_insert_templates.py` - 强制插入脚本 ### 配置文件 - `config.py` - 数据库配置 - `docker-compose.yml` - Docker配置 - `requirements.txt` - 依赖包列表 ### 文档文件 - `数据库初始化说明.md` - 基础说明 - `腾讯云数据库初始化使用说明.md` - 使用指南 - `模板初始化完整文档.md` - 本文档 ## 🎯 最佳实践 ### 开发环境 1. 使用本地数据库进行开发测试 2. 定期同步模板数据到本地 3. 使用版本控制管理模板变更 ### 生产环境 1. 使用腾讯云数据库作为主数据库 2. 定期备份数据库 3. 监控数据库性能 ### 团队协作 1. 统一使用相同的初始化脚本 2. 保持数据库配置一致性 3. 及时更新相关文档 ## 📈 性能优化 ### 数据库优化 - 使用连接池管理数据库连接 - 合理设置索引提高查询性能 - 定期清理无用数据 ### 脚本优化 - 批量插入减少数据库交互 - 使用事务确保数据一致性 - 添加进度显示提升用户体验 ## 🔮 未来规划 ### 功能扩展 - 支持模板分类管理 - 添加模板搜索功能 - 实现模板版本控制 ### 技术升级 - 迁移到更现代的数据库ORM - 添加API接口支持 - 实现自动化部署 --- **文档版本**: v1.0 **最后更新**: 2025年1月6日 **维护人员**: 开发团队 **审核状态**: ✅ 已审核