fix(db): 空字符串datetime归一化为NULL,兼容MariaDB严格模式

monitor_events.event_end_time / event_details.frame_timestamp 收到空串时
插入 NULL 而非 '',避免 1292 Incorrect datetime value 报错
This commit is contained in:
ericwyuan
2026-08-20 02:10:37 +08:00
parent e7c1641b72
commit c635dd69f1

View File

@@ -175,6 +175,11 @@ def get_video_url_exists(video_path: str) -> bool:
# monitor_events 操作
# ============================================================
def _dt_or_none(value):
"""datetime 字段归一化: 空串/None → NULLMariaDB 严格模式拒绝 '' 插入 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))
)