From 0d2d38327ea03f7301c6f9c235411c641d6a3592 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Fri, 25 Apr 2025 18:12:08 +0800 Subject: [PATCH] perf: Optimizing paging queries --- backend/apps/settings/api/terminology.py | 4 +--- backend/common/core/pagination.py | 7 ++++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/backend/apps/settings/api/terminology.py b/backend/apps/settings/api/terminology.py index 55734eaa..c7716d5a 100644 --- a/backend/apps/settings/api/terminology.py +++ b/backend/apps/settings/api/terminology.py @@ -1,7 +1,5 @@ -from typing import Optional -from fastapi import APIRouter, Depends, Request +from fastapi import APIRouter from apps.settings.models.setting_models import term_model -# from common.core.db import get_session from common.core.deps import SessionDep from common.core.pagination import Paginator from common.core.schemas import PaginatedResponse, PaginationParams diff --git a/backend/common/core/pagination.py b/backend/common/core/pagination.py index 32a2f94d..3561cbc1 100644 --- a/backend/common/core/pagination.py +++ b/backend/common/core/pagination.py @@ -34,12 +34,13 @@ class Paginator: if value is not None: count_stmt = count_stmt.where(getattr(model, field) == value) - total = (await self.session.execute(count_stmt)).scalar_one() + result = self.session.exec(count_stmt) + total = result.first() stmt = stmt.offset(offset).limit(size) - result = await self.session.execute(stmt) - items = result.scalars().all() + result = self.session.exec(stmt) + items = result.all() # 移除 scalars() 调用,直接使用 all() return items, total