#!/usr/bin/env python3 # -*- coding: utf-8 -*- """插入所有词汇书数据到数据库""" import mysql.connector from datetime import datetime # 数据库配置 db_config = { 'host': 'localhost', 'port': 3306, 'user': 'root', 'password': 'JKjk20011115', 'database': 'ai_english_learning', 'charset': 'utf8mb4' } # 所有词汇书数据 vocabulary_books = [ # 学段基础词汇 { 'id': 'primary_core_1000', 'name': '小学英语核心词汇', 'description': '小学阶段必备的1000个核心词汇,涵盖日常生活场景', 'category': '学段基础词汇', 'level': 'beginner', 'total_words': 728, # 已导入 'icon': '🎈', 'color': '#E91E63', 'sort_order': 1 }, { 'id': 'junior_high_1500', 'name': '初中英语词汇', 'description': '初中阶段1500-2500词汇,结合教材要求', 'category': '学段基础词汇', 'level': 'elementary', 'total_words': 1500, 'icon': '📝', 'color': '#00BCD4', 'sort_order': 2 }, { 'id': 'senior_high_3500', 'name': '高中英语词汇', 'description': '高中阶段2500-3500词汇,涵盖课标与高考高频词', 'category': '学段基础词汇', 'level': 'intermediate', 'total_words': 3500, 'icon': '📕', 'color': '#FF5722', 'sort_order': 3 }, { 'id': 'college_textbook', 'name': '大学英语教材词汇', 'description': '大学英语精读/泛读配套词汇', 'category': '学段基础词汇', 'level': 'intermediate', 'total_words': 2000, 'icon': '📚', 'color': '#3F51B5', 'sort_order': 4 }, # 国内应试类词汇 { 'id': 'cet4_core_2500', 'name': '大学英语四级核心词汇', 'description': '涵盖CET-4考试核心词汇2500个', 'category': '国内应试类词汇', 'level': 'intermediate', 'total_words': 2500, 'icon': '📚', 'color': '#4CAF50', 'sort_order': 11 }, { 'id': 'cet6_core_3000', 'name': '大学英语六级核心词汇', 'description': '涵盖CET-6考试核心词汇3000个', 'category': '国内应试类词汇', 'level': 'advanced', 'total_words': 3000, 'icon': '📖', 'color': '#2196F3', 'sort_order': 12 }, { 'id': 'postgraduate_vocabulary', 'name': '考研英语核心词汇', 'description': '考研英语必备核心词汇', 'category': '国内应试类词汇', 'level': 'advanced', 'total_words': 5500, 'icon': '🎓', 'color': '#9C27B0', 'sort_order': 13 }, { 'id': 'tem4_vocabulary', 'name': '专四词汇(TEM-4)', 'description': '英语专业四级考试词汇', 'category': '国内应试类词汇', 'level': 'advanced', 'total_words': 8000, 'icon': '📘', 'color': '#FF9800', 'sort_order': 14 }, { 'id': 'tem8_vocabulary', 'name': '专八词汇(TEM-8)', 'description': '英语专业八级考试词汇', 'category': '国内应试类词汇', 'level': 'expert', 'total_words': 12000, 'icon': '📙', 'color': '#F44336', 'sort_order': 15 }, # 出国考试类词汇 { 'id': 'ielts_high_3500', 'name': '雅思高频词汇', 'description': '雅思考试高频词汇3500个', 'category': '出国考试类词汇', 'level': 'advanced', 'total_words': 3500, 'icon': '🌟', 'color': '#9C27B0', 'sort_order': 21 }, { 'id': 'ielts_general', 'name': '雅思通用词汇(IELTS General)', 'description': '雅思通用类考试核心词汇', 'category': '出国考试类词汇', 'level': 'intermediate', 'total_words': 6000, 'icon': '⭐', 'color': '#673AB7', 'sort_order': 22 }, { 'id': 'toefl_high_3500', 'name': '托福高频词汇', 'description': '托福考试高频词汇3500个', 'category': '出国考试类词汇', 'level': 'advanced', 'total_words': 3500, 'icon': '🎓', 'color': '#FF9800', 'sort_order': 23 }, { 'id': 'toeic_vocabulary', 'name': '托业词汇(TOEIC)', 'description': '托业考试职场应用词汇', 'category': '出国考试类词汇', 'level': 'intermediate', 'total_words': 6000, 'icon': '💼', 'color': '#00BCD4', 'sort_order': 24 }, { 'id': 'gre_vocabulary', 'name': 'GRE词汇', 'description': 'GRE学术/研究生申请词汇', 'category': '出国考试类词汇', 'level': 'expert', 'total_words': 15000, 'icon': '🔬', 'color': '#E91E63', 'sort_order': 25 }, { 'id': 'gmat_vocabulary', 'name': 'GMAT词汇', 'description': 'GMAT商科/管理类研究生词汇', 'category': '出国考试类词汇', 'level': 'advanced', 'total_words': 8000, 'icon': '📊', 'color': '#4CAF50', 'sort_order': 26 }, { 'id': 'sat_vocabulary', 'name': 'SAT词汇', 'description': 'SAT美本申请词汇', 'category': '出国考试类词汇', 'level': 'intermediate', 'total_words': 5000, 'icon': '🎯', 'color': '#FF5722', 'sort_order': 27 }, # 职业与专业类词汇 { 'id': 'business_core_1000', 'name': '商务英语核心词汇', 'description': '商务场景常用核心词汇1000个', 'category': '职业与专业类词汇', 'level': 'intermediate', 'total_words': 1000, 'icon': '💼', 'color': '#607D8B', 'sort_order': 31 }, { 'id': 'bec_preliminary', 'name': '商务英语初级(BEC Preliminary)', 'description': 'BEC初级商务英语词汇', 'category': '职业与专业类词汇', 'level': 'intermediate', 'total_words': 3000, 'icon': '📋', 'color': '#00BCD4', 'sort_order': 32 }, { 'id': 'bec_vantage', 'name': '商务英语中级(BEC Vantage)', 'description': 'BEC中级商务英语词汇', 'category': '职业与专业类词汇', 'level': 'intermediate', 'total_words': 4000, 'icon': '📊', 'color': '#2196F3', 'sort_order': 33 }, { 'id': 'bec_higher', 'name': '商务英语高级(BEC Higher)', 'description': 'BEC高级商务英语词汇', 'category': '职业与专业类词汇', 'level': 'advanced', 'total_words': 5000, 'icon': '📈', 'color': '#4CAF50', 'sort_order': 34 }, { 'id': 'mba_finance', 'name': 'MBA/金融词汇', 'description': 'MBA、金融、会计、经济学专业词汇', 'category': '职业与专业类词汇', 'level': 'advanced', 'total_words': 6000, 'icon': '💰', 'color': '#FF9800', 'sort_order': 35 }, { 'id': 'medical_english', 'name': '医学英语词汇', 'description': '医学专业英语词汇', 'category': '职业与专业类词汇', 'level': 'advanced', 'total_words': 8000, 'icon': '⚕️', 'color': '#F44336', 'sort_order': 36 }, { 'id': 'legal_english', 'name': '法律英语词汇', 'description': '法律专业英语词汇', 'category': '职业与专业类词汇', 'level': 'advanced', 'total_words': 5000, 'icon': '⚖️', 'color': '#9C27B0', 'sort_order': 37 }, { 'id': 'it_engineering', 'name': '工程与IT英语', 'description': '计算机科学、人工智能、软件工程词汇', 'category': '职业与专业类词汇', 'level': 'intermediate', 'total_words': 4000, 'icon': '💻', 'color': '#3F51B5', 'sort_order': 38 }, { 'id': 'academic_english', 'name': '学术英语(EAP)', 'description': '学术英语写作/阅读/科研常用词汇', 'category': '职业与专业类词汇', 'level': 'advanced', 'total_words': 6000, 'icon': '🔬', 'color': '#00BCD4', 'sort_order': 39 }, # 功能型词库 { 'id': 'word_roots_affixes', 'name': '词根词缀词汇', 'description': '帮助记忆与扩展的词根词缀词汇', 'category': '功能型词库', 'level': 'intermediate', 'total_words': 3000, 'icon': '🌱', 'color': '#4CAF50', 'sort_order': 41 }, { 'id': 'synonyms_antonyms', 'name': '同义词/反义词库', 'description': '同义词、反义词、近义搭配库', 'category': '功能型词库', 'level': 'intermediate', 'total_words': 2500, 'icon': '🔄', 'color': '#2196F3', 'sort_order': 42 }, { 'id': 'daily_spoken_collocations', 'name': '日常口语搭配库', 'description': '日常口语常用搭配库', 'category': '功能型词库', 'level': 'beginner', 'total_words': 1500, 'icon': '💬', 'color': '#FF9800', 'sort_order': 43 }, { 'id': 'academic_spoken_collocations', 'name': '学术口语搭配库', 'description': '学术口语常用搭配库', 'category': '功能型词库', 'level': 'advanced', 'total_words': 2000, 'icon': '🎤', 'color': '#9C27B0', 'sort_order': 44 }, { 'id': 'academic_writing_collocations', 'name': '学术写作搭配库', 'description': '学术写作常用搭配库(Collocations)', 'category': '功能型词库', 'level': 'advanced', 'total_words': 2500, 'icon': '✍️', 'color': '#E91E63', 'sort_order': 45 }, { 'id': 'daily_life_english', 'name': '日常生活英语', 'description': '旅游、点餐、购物、出行、租房等日常生活英语', 'category': '功能型词库', 'level': 'beginner', 'total_words': 2000, 'icon': '🏠', 'color': '#00BCD4', 'sort_order': 46 }, ] def main(): try: # 连接数据库 conn = mysql.connector.connect(**db_config) cursor = conn.cursor() print(f"📚 准备插入 {len(vocabulary_books)} 个词汇书...") # 插入SQL insert_sql = """ INSERT INTO ai_vocabulary_books (id, name, description, category, level, total_words, icon, color, is_system, is_active, sort_order, created_at, updated_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, TRUE, TRUE, %s, %s, %s) ON DUPLICATE KEY UPDATE name = VALUES(name), description = VALUES(description), category = VALUES(category), level = VALUES(level), icon = VALUES(icon), color = VALUES(color), sort_order = VALUES(sort_order), updated_at = VALUES(updated_at) """ success_count = 0 update_count = 0 for book in vocabulary_books: now = datetime.now() # 检查是否已存在 cursor.execute("SELECT id FROM ai_vocabulary_books WHERE id = %s", (book['id'],)) exists = cursor.fetchone() cursor.execute(insert_sql, ( book['id'], book['name'], book['description'], book['category'], book['level'], book['total_words'], book['icon'], book['color'], book['sort_order'], now, now )) if exists: update_count += 1 print(f"🔄 更新词汇书: {book['name']} ({book['category']})") else: success_count += 1 print(f"✅ 插入词汇书: {book['name']} ({book['category']})") conn.commit() print(f"\n🎉 完成!") print(f"✅ 新增: {success_count} 个词汇书") print(f"🔄 更新: {update_count} 个词汇书") print(f"📊 总计: {success_count + update_count} 个词汇书") # 按分类统计 cursor.execute(""" SELECT category, COUNT(*) as count FROM ai_vocabulary_books WHERE is_system = TRUE AND is_active = TRUE GROUP BY category ORDER BY MIN(sort_order) """) print(f"\n📋 分类统计:") for row in cursor.fetchall(): print(f" {row[0]}: {row[1]} 个词汇书") except mysql.connector.Error as err: print(f"❌ 数据库错误: {err}") import traceback traceback.print_exc() finally: if cursor: cursor.close() if conn: conn.close() if __name__ == '__main__': main()