4.4 KiB
4.4 KiB
AI 关键词导入工具
项目简介
本项目是一个从 Excel 文件批量导入关键词到 MySQL 数据库的工具,支持自动关联科室信息和作者信息。
功能特性
- 从 Excel 文件读取关键词和科室信息
- 自动去重,避免重复导入
- 支持批量导入或测试模式(导入指定条数)
- 自动查询科室 ID 和对应的作者信息
- 导入完成后自动清理已处理的 Excel 文件
- 详细的日志输出,便于追踪导入过程
环境要求
- Python 3.7+
- MySQL 数据库
安装依赖
pip install -r requirements.txt
使用方法
1. 准备 Excel 文件
在项目根目录下创建 query_upload 文件夹,并将 Excel 文件放入该文件夹中。
Excel 文件需要包含以下列:
query列:关键词列(必需)科室列:科室信息列(可选,如不存在则不关联科室)
2. 配置数据库
编辑 database_config.py 文件,修改数据库连接配置:
DB_CONFIG = {
'host': 'your_host',
'user': 'your_user',
'password': 'your_password',
'database': 'your_database',
'charset': 'utf8mb4'
}
3. 运行导入工具
python import_keywords.py
4. 命令行参数(可选)
python import_keywords.py --host 127.0.0.1 --port 3306 --user root --password your_password --database ai_article
可用参数:
--host: 数据库主机(默认使用配置文件中的值)--port: 数据库端口(默认 3306)--user: 数据库用户名(默认使用配置文件中的值)--password: 数据库密码(默认使用配置文件中的值)--database: 数据库名(默认使用配置文件中的值)--batch-size: 日志批次大小(默认 1)--sleep: 每条记录间隔时间秒数(默认 0.1)--query-column: Excel 中的关键词列名(默认 'query')--dept-column: Excel 中的科室列名(默认 '科室')--seed-id: 种子 ID(默认 9999)--seed-name: 种子名称(默认 '手动提交')
数据库表结构
baidu_keyword 表(目标表)
导入的数据会插入到 baidu_keyword 表,字段包括:
keyword: 关键词seed_id: 种子 IDseed_name: 种子名称crawled: 是否已爬取department: 科室名称department_id: 科室 IDquery_status: 查询状态(固定为 'manual_review')author_id: 作者 IDauthor_name: 作者名称
ai_departments 表(科室表)
需要预先存在,用于查询科室 ID:
id: 科室 IDdepartment_name: 科室名称
ai_authors 表(作者表)
需要预先存在,用于查询作者信息:
id: 作者 IDauthor_name: 作者名称department_id: 所属科室 IDstatus: 状态(需为 'active')daily_post_max: 每日最大发布数(需大于 0)
工作流程
- 检测
query_upload文件夹中的 Excel 文件 - 如果有多个文件,提示用户选择
- 读取 Excel 文件中的关键词和科室信息
- 提示用户选择全部导入或测试模式
- 显示前 10 条数据预览
- 确认后开始导入:
- 查询关键词是否已存在
- 如果存在则跳过
- 如果不存在,根据科室名称查询科室 ID
- 根据科室 ID 查询符合条件的作者信息
- 插入数据到
baidu_keyword表
- 导入成功后自动清理
query_upload文件夹中的 Excel 文件
注意事项
- 确保
ai_departments表中已存在 Excel 中提到的所有科室 - 确保每个科室在
ai_authors表中至少有一个状态为 'active' 且daily_post_max > 0的作者 - 如果科室不存在,导入过程会中断并报错
- 导入成功后,原始 Excel 文件会被自动删除
- 如果导入失败,Excel 文件会保留以便排查问题
项目结构
ai_import_quary/
├── database_config.py # 数据库配置和管理模块
├── import_keywords.py # 关键词导入主程序
├── requirements.txt # Python 依赖包
├── README.md # 项目说明文档
└── query_upload/ # Excel 文件存放目录(需手动创建)
日志说明
程序运行过程中会输出详细的日志信息:
INFO级别:一般信息和进度提示DEBUG级别:详细的调试信息WARNING级别:警告信息ERROR级别:错误信息
许可证
本项目仅供内部使用。