网站首页/ 信息中心/ 档案百科/

档案培训跟踪难?基于Python+SQLite的自动化实操指南

发布时间:2026年09月11日 00:40:07 浏览量:0

一、开发环境准备与依赖安装

在开始构建档案培训跟踪系统之前,必须先配置好Python运行环境。本方案基于Python 3.8及以上版本开发,利用其内置的sqlite3库实现数据持久化,无需安装额外的数据库服务,确保零门槛落地。

打开终端或命令提示符,输入以下命令检查Python版本。如果未安装,请前往Python官网下载安装包并完成安装,安装时务必勾选“Add Python to PATH”。

```bash python --version ```

为了实现美观的表格化输出,我们需要安装第三方库tabulate。请在终端执行以下安装命令:

```bash pip install tabulate ```

安装完成后,新建一个项目文件夹,例如命名为training_tracker。后续的所有代码文件和配置文件都将存放在此目录下。

二、项目配置文件设计

为了实现系统的灵活性,我们将培训模块的名称和考核标准通过配置文件进行管理,而不是硬编码在脚本中。在项目根目录下创建一个名为config.ini的文件,并填入以下内容。该配置文件定义了两个必选的培训模块及其对应的满分分数。

```ini [training_modules] module_1 = 档案安全保密制度 module_2 = 电子档案归档实操规范 [settings] pass_score = 80 ```

通过上述配置,系统会自动读取“档案安全保密制度”和“电子档案归档实操规范”作为两个跟踪维度,并将80分设为及格线。这种设计使得后续修改培训项目时,无需改动代码逻辑,只需更新此配置文件即可。

三、数据库设计与初始化脚本

系统采用SQLite数据库存储数据,我们需要设计三张表:employees(员工表)、modules(培训模块表)和records(培训记录表)。在项目目录下创建init_db.py文件,写入以下代码。执行该脚本即可自动生成数据库文件和表结构。

```python import sqlite3 import configparser import os def init_database(): 读取配置文件 config = configparser.ConfigParser() config.read('config.ini', encoding='utf-8') 连接数据库(如果不存在会自动创建) conn = sqlite3.connect('training_data.db') cursor = conn.cursor() 创建员工表 cursor.execute(''' CREATE TABLE IF NOT EXISTS employees ( emp_id TEXT PRIMARY KEY, name TEXT NOT NULL, department TEXT ) ''') 创建模块表 cursor.execute(''' CREATE TABLE IF NOT EXISTS modules ( id INTEGER PRIMARY KEY AUTOINCREMENT, module_name TEXT UNIQUE NOT NULL ) ''') 创建培训记录表 cursor.execute(''' CREATE TABLE IF NOT EXISTS records ( id INTEGER PRIMARY KEY AUTOINCREMENT, emp_id TEXT, module_name TEXT, score INTEGER, status TEXT DEFAULT '未开始', update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (emp_id) REFERENCES employees(emp_id), FOREIGN KEY (module_name) REFERENCES modules(module_name) ) ''') 初始化模块数据 if 'training_modules' in config: for key, value in config['training_modules'].items(): cursor.execute('INSERT OR IGNORE INTO modules (module_name) VALUES (?)', (value,)) conn.commit() conn.close() print("数据库初始化完成,数据库文件已生成:training_data.db") if __name__ == '__main__': init_database() ```

在终端运行python init_db.py。如果看到“数据库初始化完成”的提示,且目录下出现了training_data.db文件,说明数据库环境搭建成功。

四、核心功能代码实现

接下来编写系统的核心业务逻辑。我们将所有功能封装在app.py中,包括员工录入、成绩登记、进度查询和自动催办提醒。请创建app.py并完整复制以下代码。

1. 员工信息录入功能

档案培训跟踪难?基于Python+SQLite的自动化实操指南

此功能用于将参训人员导入系统。代码中包含了工号查重逻辑,避免重复录入。

```python import sqlite3 from tabulate import tabulate from datetime import datetime def add_employee(): conn = sqlite3.connect('training_data.db') cursor = conn.cursor() print("\n 录入员工信息 ") emp_id = input("请输入工号: ").strip() name = input("请输入姓名: ").strip() dept = input("请输入部门: ").strip() if not emp_id or not name: print("错误:工号和姓名不能为空!") return try: cursor.execute("INSERT INTO employees (emp_id, name, department) VALUES (?, ?, ?)", (emp_id, name, dept)) conn.commit() print(f"成功录入员工:{name}") except sqlite3.IntegrityError: print("错误:该工号已存在,请勿重复录入。") finally: conn.close() ```

2. 培训成绩登记与状态更新

此模块用于记录员工的培训成绩。系统会自动读取配置文件中的及格分数线,判断状态是“合格”还是“不合格”,并更新数据库。

```python def update_training_record(): import configparser config = configparser.ConfigParser() config.read('config.ini', encoding='utf-8') pass_score = int(config['settings']['pass_score']) conn = sqlite3.connect('training_data.db') cursor = conn.cursor() print("\n 登记培训成绩 ") emp_id = input("请输入员工工号: ").strip() 检查员工是否存在 cursor.execute("SELECT name FROM employees WHERE emp_id = ?", (emp_id,)) emp = cursor.fetchone() if not emp: print("错误:系统中不存在该工号,请先录入。") conn.close() return 显示可选模块 cursor.execute("SELECT module_name FROM modules") modules = cursor.fetchall() print("可选培训模块:") for idx, mod in enumerate(modules): print(f"{idx + 1}. {mod[0]}") try: choice = int(input("请选择模块编号: ")) if choice < 1 or choice > len(modules): print("错误:选择无效。") return module_name = modules[choice - 1][0] score = int(input(f"请输入 {module_name} 考核分数: ")) 判断状态 status = "合格" if score >= pass_score else "不合格" 插入或更新记录 cursor.execute(''' INSERT INTO records (emp_id, module_name, score, status, update_time) VALUES (?, ?, ?, ?, ?) ON CONFLICT(emp_id, module_name) DO UPDATE SET score=?, status=?, update_time=? ''', (emp_id, module_name, score, status, datetime.now(), score, status, datetime.now())) conn.commit() print(f"更新成功:{emp[0]} 的 {module_name} 状态为 {status}") except ValueError: print("错误:请输入有效的数字。") finally: conn.close() ```

3. 培训跟踪报表与未完成提醒

这是解决“跟踪不到位”的核心功能。它会查询所有员工对所有模块的完成情况,并生成一份直观的表格。重点在于筛选出“未开始”或“不合格”的记录,并在控制台高亮显示。

```python def generate_report(): conn = sqlite3.connect('training_data.db') cursor = conn.cursor() print("\n 培训进度跟踪报表 ") 获取所有员工和模块 cursor.execute("SELECT emp_id, name, department FROM employees ORDER BY department") employees = cursor.fetchall() cursor.execute("SELECT module_name FROM modules") modules = [m[0] for m in cursor.fetchall()] table_data = [] alert_count = 0 for emp in employees: emp_id, name, dept = emp row = [emp_id, name, dept] for mod in modules: cursor.execute("SELECT status, score FROM records WHERE emp_id=? AND module_name=?", (emp_id, mod)) record = cursor.fetchone() if record: status, score = record display_text = f"{status}({score})" if status == "不合格": display_text = f"{status}({score})" 标记重点 alert_count += 1 else: display_text = "未开始" 标记重点 alert_count += 1 row.append(display_text) table_data.append(row) 构建表头 headers = ["工号", "姓名", "部门"] + modules 打印表格 print(tabulate(table_data, headers=headers, tablefmt="grid")) print(f"\n统计:共发现 {alert_count} 项未完成或不合格的培训记录(已加粗显示)。") conn.close() ```

五、系统主入口与交互菜单

将上述功能函数整合,添加一个主循环菜单,方便用户操作。将以下代码追加到app.py文件的末尾。

```python def main(): while True: print("\n======================") print("档案培训跟踪管理系统") print("======================") print("1. 录入员工信息") print("2. 登记培训成绩") print("3. 生成跟踪报表") print("4. 退出系统") choice = input("请输入功能编号: ").strip() if choice == '1': add_employee() elif choice == '2': update_training_record() elif choice == '3': generate_report() elif choice == '4': print("系统已退出。") break else: print("输入无效,请重新选择。") if __name__ == '__main__': 确保数据库已初始化 if not os.path.exists('training_data.db'): print("检测到数据库不存在,正在执行初始化...") import init_db init_db.init_database() main() ```

六、实操验证步骤

代码编写完成后,按照以下步骤进行全流程测试,确保系统逻辑无误。

步骤1:启动系统
在终端执行命令python app.py。系统会自动检测数据库,如果缺失会调用初始化脚本。进入主菜单后,输入1选择“录入员工信息”。

步骤2:录入测试数据
依次录入三名员工:
工号:1001,姓名:张三,部门:财务部
工号:1002,姓名:李四,部门:技术部
工号:1003,姓名:王五,部门:综合部

步骤3:登记部分成绩
返回主菜单,输入2选择“登记培训成绩”。
为张三(1001)登记“档案安全保密制度”成绩90分(合格)。
为李四(1002)登记“档案安全保密制度”成绩60分(不合格)。
王五暂不登记任何成绩。

步骤4:查看跟踪报表
返回主菜单,输入3选择“生成跟踪报表”。
此时屏幕应输出一张包含所有员工和两个模块的表格。观察输出结果:
1. 张三在“档案安全保密制度”列应显示“合格(90)”,在“电子档案归档实操规范”列应显示加粗的“未开始”。
2. 李四在“档案安全保密制度”列应显示加粗的“不合格(60)”。
3. 王五两列均应显示加粗的“未开始”。
底部统计信息应准确显示未完成项的总数。

通过以上实操,您已经拥有了一个轻量级、无需服务器、可直接运行的档案培训跟踪工具。管理员只需每天运行一次“生成跟踪报表”功能,即可精准掌握全员培训进度,彻底解决跟踪不到位的问题。

微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818