准备工作
需完成2项准备,全程命令直接复制执行即可:
必备环境与依赖
- 确认Python:Windows Cmd执行
python --version,Mac/Linux终端执行python3 --version;若未安装,Windows执行winget install Python.Python.3.11,Mac执行brew install python3
- 安装国内源依赖:执行代码块指令(避免超时)
```bash
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple flask flask-sqlalchemy
```
项目环境搭建
创建项目文件夹
打开资源管理器,新建文件夹命名为device_manager;Windows在该文件夹地址栏输入cmd回车,Mac右键文件夹选「新建终端」,执行:
```bash
cd device_manager
```
必须确认当前终端路径为device_manager,后续所有操作均在该路径下
核心代码编写
主程序文件app.py
用任意代码编辑器(如VS Code)在device_manager文件夹新建app.py,粘贴完整代码(不要修改标点、缩进,严格复制):
```python
from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
初始化Flask应用
app = Flask(__name__)
配置SQLite数据库(零外部依赖)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
设备档案数据库模型
class Device(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False) 设备名称
serial_number = db.Column(db.String(50), unique=True, nullable=False) 唯一编号
purchase_date = db.Column(db.Date, nullable=False) 采购日期
supplier = db.Column(db.String(100), nullable=False) 供应商
status = db.Column(db.String(20), nullable=False, default='在用') 状态
remark = db.Column(db.Text) 备注
设备列表路由
@app.route('/')
def index():
devices = Device.query.all()
return render_template('index.html', devices=devices)
添加设备路由
@app.route('/add', methods=['GET', 'POST'])
def add_device():
if request.method == 'POST':
try:
接收表单数据并创建新设备
new_device = Device(
name=request.form['name'],
serial_number=request.form['serial_number'],
purchase_date=datetime.strptime(request.form['purchase_date'], '%Y-%m-%d').date(),
supplier=request.form['supplier'],
status=request.form['status'],
remark=request.form['remark']
)
db.session.add(new_device)
db.session.commit()
return redirect(url_for('index'))
except Exception as e:
return f'添加失败:错误信息→{str(e)}'
return render_template('add.html')
删除设备路由
@app.route('/delete/
')
def delete_device(device_id):
device = Device.query.get_or_404(device_id)
db.session.delete(device)
db.session.commit()
return redirect(url_for('index'))
首次运行数据库初始化,完成后必须删除以下2行代码!
with app.app_context():
db.create_all()
if __name__ == '__main__':
app.run(debug=True)
```
重要提醒:首次运行服务前,执行完一次后立即删除代码末尾的2行初始化代码,否则每次启动都会重复建库报错
前端模板文件

在device_manager内新建templates文件夹,再新建2个HTML文件:
index.html(设备列表页)
```html
设备档案管理
机器设备档案管理系统
添加新设备
| ID | 设备名称 | 编号 | 采购日期 | 供应商 | 状态 | 备注 | 操作 |
{% for device in devices %}
| {{ device.id }} |
{{ device.name }} |
{{ device.serial_number }} |
{{ device.purchase_date.strftime('%Y-%m-%d') }} |
{{ device.supplier }} |
{{ device.status }} |
{{ device.remark }} |
删除 |
{% endfor %}
```
add.html(添加设备页)
```html
添加设备
添加设备档案
返回列表
```
运行与验证
启动服务
回到终端(保持在device_manager路径),执行:
```bash
Windows
python app.py
Mac/Linux
python3 app.py
```
出现提示 Running on http://127.0.0.1:5000说明服务启动成功
功能测试
- 打开浏览器,输入
http://127.0.0.1:5000,看到空设备列表
- 点击「添加新设备」,填写所有带字段,采购日期用选择器选择(避免格式错误),提交后返回列表,会显示新增设备
- 点击设备后「删除」按钮可移除档案
若添加失败,优先检查设备编号是否重复、采购日期是否选填,修改后重试即可
核心说明
该系统使用轻量技术栈,无需安装数据库服务,所有数据存在本地data.db文件中,可直接备份;支持基础的设备档案增删查功能,完全满足中小团队的设备台账需求。