diff --git a/fam-core/src/fam_core/db_layer.py b/fam-core/src/fam_core/db_layer.py index 7a633d1..856d591 100644 --- a/fam-core/src/fam_core/db_layer.py +++ b/fam-core/src/fam_core/db_layer.py @@ -175,6 +175,11 @@ def get_video_url_exists(video_path: str) -> bool: # monitor_events 操作 # ============================================================ +def _dt_or_none(value): + """datetime 字段归一化: 空串/None → NULL(MariaDB 严格模式拒绝 '' 插入 DATETIME 列)""" + return value if value else None + + def insert_event(task_id: int, event_start_time: str, event_end_time: str, camera_name: str, global_summary: str, entities_json: list, compute_provider: list) -> int: @@ -187,7 +192,7 @@ def insert_event(task_id: int, event_start_time: str, event_end_time: str, (task_id, event_start_time, event_end_time, camera_name, global_summary, entities_json, compute_provider) VALUES (%s, %s, %s, %s, %s, %s, %s)""", - (task_id, event_start_time, event_end_time, camera_name, + (task_id, _dt_or_none(event_start_time), _dt_or_none(event_end_time), camera_name, global_summary, json.dumps(entities_json, ensure_ascii=False), json.dumps(compute_provider, ensure_ascii=False)) ) @@ -214,7 +219,7 @@ def insert_event_detail(event_id: int, task_id: int, frame_index: int, (event_id, task_id, frame_index, frame_timestamp, camera_name, person, action, clothing, is_attention_event, source_providers) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""", - (event_id, task_id, frame_index, frame_timestamp, camera_name, + (event_id, task_id, frame_index, _dt_or_none(frame_timestamp), camera_name, person, action, clothing, is_attention_event, json.dumps(source_providers, ensure_ascii=False)) )