From 7f80d7304d1c8d0bf01d12da285ce4f58f1bb842 Mon Sep 17 00:00:00 2001 From: lgphone Date: Thu, 20 Mar 2025 23:23:48 +0800 Subject: [PATCH] Fix: Optimized the get_by_id method to resolve the issue of missing exceptions and improve query performance (#6320) Fix: Optimized the get_by_id method to resolve the issue of missing exceptions and improve query performance ### What problem does this PR solve? Optimized the get_by_id method to resolve the issue of missing exceptions and improve query performance. Optimization details: 1. The original method used a custom query method that required concatenating SQL, which impacted performance. 2. The query method returned a list, which needed to be accessed by index, posing a risk of index out-of-bounds errors. 3. The original method used except Exception to catch all errors, which is not a best practice in Python programming and may lead to missing exceptions. The get_or_none method accurately catches DoesNotExist errors while allowing other errors to be raised normally. ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) - [x] Performance Improvement --- api/db/services/common_service.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/api/db/services/common_service.py b/api/db/services/common_service.py index 184f30d5c..75bc1a6f4 100644 --- a/api/db/services/common_service.py +++ b/api/db/services/common_service.py @@ -225,11 +225,10 @@ class CommonService: # pid: Record ID # Returns: # Tuple of (success, record) - try: - obj = cls.model.query(id=pid)[0] + obj = cls.model.get_or_none(cls.model.id == pid) + if obj: return True, obj - except Exception: - return False, None + return False, None @classmethod @DB.connection_context()