From 2c0fe7f3c537877d8710a05081c22e27a5a2003d Mon Sep 17 00:00:00 2001 From: 16337 <1633794139@qq.com> Date: Fri, 30 Jan 2026 11:46:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=80=82=E9=85=8D=20SQLite=20API=20?= =?UTF-8?q?=E6=9B=BF=E6=8D=A2=20MySQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - config_sync.py: - 修复导入: get_sqlite_manager 替代 get_database_manager - 修复方法: get_all_camera_configs 替代 get_camera_info - 修复方法: get_rois_by_camera 替代 get_roi_configs - 修复方法: get_camera_config 替代 get_camera_info - 修复方法: get_roi_config 替代 get_roi_configs - result_reporter.py: - 更新注释: 移除 MySQL 相关描述 --- core/config_sync.py | 26 +++++++++++++++++--------- core/result_reporter.py | 4 ++-- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/core/config_sync.py b/core/config_sync.py index 0b3ab23..172162a 100644 --- a/core/config_sync.py +++ b/core/config_sync.py @@ -1,6 +1,11 @@ """ 配置同步模块 -实现MySQL数据库连接管理、Redis Pub/Sub订阅、配置缓存与动态刷新 +实现 SQLite 本地配置存储、Redis Pub/Sub订阅、配置缓存与动态刷新 + +存储策略: +- SQLite: 本地配置存储(摄像头、ROI) +- Redis: 配置变更实时推送 +- 内存缓存: 热点配置快速访问 """ import json @@ -15,7 +20,7 @@ from redis import Redis from redis.client import PubSub from config.settings import get_settings, RedisConfig -from config.database import get_database_manager, DatabaseManager +from config.database import get_sqlite_manager, SQLiteManager from config.config_models import CameraInfo as CameraInfoModel, ROIInfo, ConfigVersion from utils.version_control import get_version_control @@ -148,7 +153,7 @@ class ConfigSyncManager: def _init_database(self): """初始化数据库连接""" if self._db_manager is None: - self._db_manager = get_database_manager() + self._db_manager = get_sqlite_manager() @property def config_version(self) -> str: @@ -263,7 +268,7 @@ class ConfigSyncManager: return [] try: - cameras = self._db_manager.get_camera_info() + cameras = self._db_manager.get_all_camera_configs() result = [CameraInfoModel.from_dict(c) for c in cameras] self._cache.set(cache_key, result) @@ -292,7 +297,10 @@ class ConfigSyncManager: return [] try: - roi_configs = self._db_manager.get_roi_configs(camera_id=camera_id) + if camera_id: + roi_configs = self._db_manager.get_rois_by_camera(camera_id) + else: + roi_configs = self._db_manager.get_all_roi_configs() result = [ROIInfo.from_dict(r) for r in roi_configs] self._cache.set(cache_key, result) @@ -314,11 +322,11 @@ class ConfigSyncManager: try: if config_type == "camera": - cameras = self._db_manager.get_camera_info(camera_id) - return cameras[0] if cameras else None + camera = self._db_manager.get_camera_config(config_id) + return camera if camera else None elif config_type == "roi": - rois = self._db_manager.get_roi_configs(roi_id=config_id) - return rois[0] if rois else None + roi = self._db_manager.get_roi_config(config_id) + return roi if roi else None except Exception as e: logger.error(f"获取配置失败: {e}") return None diff --git a/core/result_reporter.py b/core/result_reporter.py index cb821fd..e2d9ea0 100644 --- a/core/result_reporter.py +++ b/core/result_reporter.py @@ -1,11 +1,11 @@ """ 结果上报模块 -支持 MQTT、云端 MySQL 和本地 SQLite 存储 +支持 MQTT 推送和本地 SQLite 存储 存储策略: - MQTT: 实时推送告警到云端 - SQLite: 本地异步存储(边缘侧断网容灾) -- MySQL: 可选云端同步 +- 断网时自动缓存到本地,恢复后自动同步 """ import json