- 后端框架:Flask
- 数据库:SQLite
- 前端框架:Bootstrap 5.3.0
- Excel处理:openpyxl
- 日志记录:Python logging模块
camera_manager/
├── app.py # Flask 主应用
├── models.py # 数据库模型
├── utils.py # 工具函数
├── templates/
│ ├── base.html # 基础模板
│ ├── index.html # 首页(列表展示)
│ ├── add.html # 添加页面
│ └── edit.html # 编辑页面
└── requirements.txt # 依赖
一个简易版的记录相机的相关信息,方便安防集成商以及大中型企事业单位管理和运维效率,支持地址的增删改查等管理操作。
- 可现实所有列数据
- 可定制显示的列数据
- 可导出Excel文件
- 可导入Excel文件
- 可查看或编辑相机的详细信息
- 默认显示相机编码、相机名称(751-2024)、IP地址、经纬度、地理位置、所属辖区
相机地址记录包含以下字段:
- 相机类型:枪机、球机、人像、结构化、微卡、双舱、全局、高点、全景
- 相机编码:(必填,唯一)
- 相机名称(751-2024):(必填)
- 相机名称(751-2008):(必填)
- 经纬度
- 地理位置
- 所属辖区
- IP地址
- 运营商
- 运维单位
- 运维人员
- 运维人员电话
- 运维单位责任人
- 单位责任人电话
- 更新日期:年月日(必填,默认当前日期)
- 备注
- 相机编码增删改查
- 相机编码唯一性验证:确保不会添加重复编码
- 相机编码排序:按编码从小到大自动排序(SQLite兼容实现)
- 批量添加功能:输入编码号(如:09-157-01)时,自动计算并添加所有可用编码(取消批量添加待完善)
- 经纬度:经纬度保持小数点后六位(如:118.794058,37.264498)
- 自动补全功能:常用字段支持自动补全,提高录入效率
- 分页功能:每页显示300行数据,提高大数据量下的页面加载速度
- Excel导入导出:支持批量导出相机列表和从Excel文件导入数据
- 搜索功能:支持按IP地址、相机名称、相机编码、运维单位、运维人员、所属辖区进行搜索
- Bootstrap引入:使用CDN加载,无需本地文件
- 响应式设计:使用Bootstrap栅格系统,适配不同屏幕尺寸
- 分页实现:使用SQLAlchemy的paginate方法实现数据库级分页
- 排序:SQLite默认序列排序
- 日志记录:实现了请求日志和错误日志记录
- Excel处理:使用openpyxl库实现Excel文件的导入导出功能
- 首页:相机列表展示,支持分页、搜索、批量删除和批量导出
- 添加页面:表单式添加相机名称,支持单个添加和批量添加(相机名称)
- 编辑页面:修改已有相机名称信息
- 消息提示:操作结果反馈(成功/失败/警告信息)
- Excel导入:支持从Excel文件批量导入相机名称信息
- 动态加载:表格数据分页加载,提高大数据量下的性能
dist
├── 相机管理系统.exe ← 主程序(74MB)
├── camera.db ← SQLite 数据库(含现有数据)
└── templates\ ← HTML 模板目录
├── base.html
├── index.html
├── add.html
└── edit.html
pip install -r requirements.txt
python app.py在浏览器打开 http://localhost:5000
创建服务文件 /etc/systemd/system/myapp.service
[Unit]
Description=My Python App
After=network.target
[Service]
User=你的用户名
WorkingDirectory=/path/to/your/app
ExecStart=/usr/bin/python3 /path/to/your/app/app.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target将 dist 文件夹整体复制到任意 Windows 电脑
双击运行 相机管理系统.exe
在浏览器打开 http://localhost:5000
数据库文件 camera.db 会随程序运行自动生成到同目录
演示地址:相机管理
程序使用 Flask 内置开发服务器
如需后台运行,可以双击图标后最小化窗口
数据库文件默认存放在 .exe 同目录下,如需重置可删除 camera.db 后重新启动程序
