为了实现零门槛快速落地,本指南采用Python轻量级Web框架Flask作为后端,SQLite作为嵌入式数据库。这种方式无需安装MySQL或PostgreSQL等重型数据库服务,配置文件极简,非常适合中小企业内部工具开发。前端使用Bootstrap 5,无需编写复杂的CSS即可实现响应式布局。
请确保系统已安装Python 3.8或更高版本。在终端输入以下命令检查版本:
python --version
若未安装,请前往Python官网下载安装包并勾选"Add Python to PATH"。
在命令行执行以下命令创建项目文件夹并进入:
mkdir fishery_archive
cd fishery_archive
创建虚拟环境(推荐)并安装Flask:
python -m venv venv
Windows激活虚拟环境:venv\Scripts\activate
Linux/Mac激活虚拟环境:source venv/bin/activate
安装Flask:
pip install flask

渔业档案管理的核心在于船舶基础信息与证书有效期管理。我们需要在SQLite中建立一张表,包含船舶名称、吨位、功率、所有人及捕捞许可证有效期等关键字段。
在项目根目录下创建一个名为schema.sql的文件,并写入以下SQL语句:
```sql DROP TABLE IF EXISTS ships; CREATE TABLE ships ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, tonnage REAL NOT NULL, power REAL NOT NULL, owner TEXT NOT NULL, license_no TEXT NOT NULL UNIQUE, expiry_date TEXT NOT NULL, status TEXT DEFAULT '正常' ); ```创建app.py文件,这是整个系统的入口。我们将实现数据库初始化、档案列表展示、新增档案、删除档案以及证书过期自动检测功能。
将以下完整代码复制到app.py中:
```python import sqlite3 from flask import Flask, render_template, request, url_for, flash, redirect from werkzeug.exceptions import abort app = Flask(__name__) app.config['SECRET_KEY'] = 'your_secret_key_here' 数据库连接函数 def get_db_connection(): conn = sqlite3.connect('database.db') conn.row_factory = sqlite3.Row return conn 初始化数据库 def init_db(): conn = get_db_connection() with app.open_resource('schema.sql', mode='r') as f: conn.executescript(f.read()) conn.commit() conn.close() 检查证书状态 def check_ship_status(expiry_date): from datetime import datetime today = datetime.now().strftime('%Y-%m-%d') if expiry_date < today: return '已过期' return '正常' @app.route('/') def index(): conn = get_db_connection() 获取所有船舶数据并动态计算状态 ships = conn.execute('SELECT FROM ships').fetchall() ship_list = [] for ship in ships: ship_dict = dict(ship) ship_dict['status'] = check_ship_status(ship_dict['expiry_date']) ship_list.append(ship_dict) conn.close() return render_template('index.html', ships=ship_list) @app.route('/create', methods=('GET', 'POST')) def create(): if request.method == 'POST': name = request.form['name'] tonnage = request.form['tonnage'] power = request.form['power'] owner = request.form['owner'] license_no = request.form['license_no'] expiry_date = request.form['expiry_date'] if not name: flash('船名是必填项!') else: conn = get_db_connection() conn.execute('INSERT INTO ships (name, tonnage, power, owner, license_no, expiry_date) VALUES (?, ?, ?, ?, ?, ?)', (name, tonnage, power, owner, license_no, expiry_date)) conn.commit() conn.close() return redirect(url_for('index')) return render_template('create.html') @app.route('/在项目根目录下创建templates文件夹。所有HTML文件将存放在此处。我们需要创建三个文件:基础布局模板、列表页和新增页。
在templates目录下创建base.html,引入Bootstrap 5 CDN以快速构建界面:
```html在templates目录下创建index.html,展示所有船舶档案,并根据状态高亮显示过期证书:
```html {% extends 'base.html' %} {% block content %}| ID | 船名 | 吨位 | 功率 | 所有人 | 许可证号 | 有效期至 | 状态 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ ship['id'] }} | {{ ship['name'] }} | {{ ship['tonnage'] }} | {{ ship['power'] }} | {{ ship['owner'] }} | {{ ship['license_no'] }} | {{ ship['expiry_date'] }} | {% if ship['status'] == '已过期' %} 已过期 {% else %} 正常 {% endif %} |
在templates目录下创建create.html,提供数据录入表单:
```html {% extends 'base.html' %} {% block content %}完成以上代码编写后,你的项目目录结构应包含以下文件:
确保虚拟环境已激活,在终端执行:
python app.py
终端显示 Running on http://127.0.0.1:5000 即表示启动成功。
打开浏览器访问 http://127.0.0.1:5000。
关闭终端(停止程序),然后重新运行 python app.py。刷新浏览器页面,之前录入的数据依然存在,证明SQLite数据库文件已成功生成并持久化存储在本地。
档案管理系统能实现智能化管理,让文件管理不再“捉迷藏”