环保部门档案培训案例:Python轻量级管理系统搭建实战

一、项目目录结构规划

在开始编写代码之前,必须先建立标准的项目目录结构,以确保文件职责清晰。请在你的电脑上创建一个名为 eco_archive_system 的主文件夹,并在其中按照以下结构创建子文件夹和空文件:

  • eco_archive_system/ (项目根目录)
    • static/ (存放静态文件)
      • uploads/ (存放上传的档案文件,需手动创建)
    • templates/ (存放HTML模板)
      • index.html (首页列表页)
      • upload.html (档案上传页)
    • app.py (后端核心逻辑文件)
    • schema.sql (数据库初始化脚本)
    • archive_db.sqlite (数据库文件,运行后自动生成)

二、开发环境快速搭建

本系统基于 Python 开发,无需配置复杂的服务器环境。首先确保你的电脑已安装 Python 3.7 或更高版本。打开终端(Windows下为CMD或PowerShell),依次执行以下命令安装必要的依赖库:

1. 安装 Web 框架 Flask:

```bash pip install flask ```

2. 安装数据库工具(SQLite 为 Python 内置,无需安装,但若需管理工具可安装 DBBrowser,此处仅依赖 Flask):

环境准备完成后,我们开始构建数据库层。

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

针对环保部门档案管理的特点,我们需要存储档案标题、所属类别(如:排污许可、危废管理、环保督察等)、上传时间以及物理文件路径。请打开 schema.sql 文件,写入以下完整的 SQL 语句:

```sql DROP TABLE IF EXISTS archives; CREATE TABLE archives ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, category TEXT NOT NULL, filename TEXT NOT NULL, upload_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ```

四、后端核心逻辑实现

后端采用 Flask 框架,负责处理文件上传、数据存储及页面路由。请打开 app.py,将以下代码完整复制进去。这段代码包含了数据库连接、文件上传安全处理、表单提交处理及页面渲染的所有逻辑:

```python import os import sqlite3 from flask import Flask, render_template, request, url_for, flash, redirect from werkzeug.utils import secure_filename 配置部分 app = Flask(__name__) app.config['SECRET_KEY'] = 'dev_key_eco_archive' 用于表单加密 app.config['UPLOAD_FOLDER'] = os.path.join('static', 'uploads') 上传目录 app.config['ALLOWED_EXTENSIONS'] = {'pdf', 'doc', 'docx', 'ppt', 'pptx', 'txt', 'jpg', 'png'} app.config['MAX_CONTENT_LENGTH'] = 16 1024 1024 限制上传大小为16MB 确保上传目录存在 os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True) 数据库连接辅助函数 def get_db_connection(): conn = sqlite3.connect('archive_db.sqlite') conn.row_factory = sqlite3.Row return conn 初始化数据库 def init_db(): with app.app_context(): db = get_db_connection() with open('schema.sql', mode='r', encoding='utf-8') as f: db.executescript(f.read()) db.commit() 检查文件扩展名 def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1].lower() in app.config['ALLOWED_EXTENSIONS'] 首页路由:显示档案列表及搜索功能 @app.route('/', methods=['GET', 'POST']) def index(): conn = get_db_connection() query = request.args.get('q', '') if query: 搜索逻辑 archives = conn.execute('SELECT FROM archives WHERE title LIKE ? OR category LIKE ?', ('%' + query + '%', '%' + query + '%')).fetchall() else: 默认显示所有,按时间倒序 archives = conn.execute('SELECT FROM archives ORDER BY upload_date DESC').fetchall() conn.close() return render_template('index.html', archives=archives) 上传页面路由 @app.route('/upload', methods=['GET', 'POST']) def upload(): if request.method == 'POST': 检查是否有文件 if 'file' not in request.files: flash('未选择文件') return redirect(request.url) file = request.files['file'] title = request.form['title'] category = request.form['category'] if file.filename == '': flash('未选择文件') return redirect(request.url) if file and allowed_file(file.filename): filename = secure_filename(file.filename) 安全处理文件名 file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename) file.save(file_path) 保存文件 写入数据库 conn = get_db_connection() conn.execute('INSERT INTO archives (title, category, filename) VALUES (?, ?, ?)', (title, category, filename)) conn.commit() conn.close() flash('档案上传成功!') return redirect(url_for('index')) else: flash('不支持的文件类型') return render_template('upload.html') if __name__ == '__main__': 首次运行时自动初始化数据库 if not os.path.exists('archive_db.sqlite'): init_db() app.run(debug=True, port=5000) ```

五、前端页面与交互实现

为了快速构建美观且实用的界面,我们使用原生 HTML 配合 Bootstrap 5(通过 CDN 引入)。请依次创建以下两个 HTML 文件。

1. 创建档案列表页

环保部门档案培训案例:Python轻量级管理系统搭建实战

该页面包含顶部的搜索栏和下方的档案列表表格。请编辑 templates/index.html

```html 环保档案管理系统
{% with messages = get_flashed_messages() %} {% if messages %}
{{ messages[0] }}
{% endif %} {% endwith %}
档案列表
{% for archive in archives %} {% else %} {% endfor %}
ID 档案标题 所属类别 上传时间 操作
{{ archive['id'] }} {{ archive['title'] }} {{ archive['category'] }} {{ archive['upload_date'] }} 下载/预览
暂无档案数据
```

2. 创建档案上传页

该页面提供表单用于输入档案信息并选择文件。请编辑 templates/upload.html

```html 上传档案
录入新培训档案
{% with messages = get_flashed_messages() %} {% if messages %}
{{ messages[0] }}
{% endif %} {% endwith %}
支持 PDF, Word, PPT, 图片等格式,最大 16MB。
取消
```

六、系统运行与操作验证

代码编写完成后,即可进行系统启动和功能验证。

1. 启动服务:

在终端中进入项目根目录 eco_archive_system,执行以下命令启动 Web 服务:

```bash python app.py ```

当终端显示 Running on http://127.0.0.1:5000 时,说明服务启动成功。

2. 上传档案测试:

  • 打开浏览器访问 http://127.0.0.1:5000/upload
  • 在“档案标题”栏输入:企业突发环境事件风险评估培训
  • 在“所属类别”栏选择:业务培训
  • 点击“选择文件”,从电脑中选择一个 PDF 或 Word 文档。
  • 点击“确认上传”按钮。
  • 系统成功后会自动跳转回首页,并提示“档案上传成功”。

3. 搜索与查询测试:

  • 在首页顶部的搜索框中输入关键词:培训
  • 点击“查询”按钮。
  • 下方列表将仅显示标题或类别中包含“培训”字样的档案记录。
  • 点击列表右侧的“下载/预览”按钮,可直接在浏览器中打开或下载刚才上传的文件。

至此,一套针对环保部门档案培训管理的轻量级系统已完全落地。该系统支持本地文件存储、分类检索及多格式文件管理,完全满足日常培训档案的数字化归档需求。

AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统