From ef0c56934869afb2ce75d700400896d1644bdbd8 Mon Sep 17 00:00:00 2001 From: Windpicker-owo <3431391539@qq.com> Date: Thu, 11 Dec 2025 21:50:28 +0800 Subject: [PATCH] =?UTF-8?q?fix(query=5Fbuilder):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E7=A1=AE=E4=BF=9D=E5=AD=97=E6=AE=B5=E5=8F=AF=E7=94=A8=E5=90=8E?= =?UTF-8?q?=E5=86=8D=E9=87=8A=E6=94=BE=E6=95=B0=E6=8D=AE=E5=BA=93=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/database/api/query.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/common/database/api/query.py b/src/common/database/api/query.py index db112c87b..5a43233fa 100644 --- a/src/common/database/api/query.py +++ b/src/common/database/api/query.py @@ -215,26 +215,25 @@ class QueryBuilder(Generic[T]): async with get_db_session() as session: result = await session.execute(paginated_stmt) - # .all() 已经返回 list,无需再包装 instances = result.scalars().all() if not instances: # 没有更多数据 break - # 在 session 内部转换为字典列表 + # 在 session 内部转换为字典列表,保证字段可用再释放连接 instances_dicts = [_model_to_dict(inst) for inst in instances] - if as_dict: - yield instances_dicts - else: - yield [_dict_to_model(self.model, row) for row in instances_dicts] + if as_dict: + yield instances_dicts + else: + yield [_dict_to_model(self.model, row) for row in instances_dicts] - # 如果返回的记录数小于 batch_size,说明已经是最后一批 - if len(instances) < batch_size: - break + # 如果返回的记录数小于 batch_size,说明已经是最后一批 + if len(instances) < batch_size: + break - offset += batch_size + offset += batch_size async def iter_all( self,