From 469abafe7b2b5937e9df7800d09e5b8136dcd636 Mon Sep 17 00:00:00 2001 From: junjun Date: Fri, 25 Jul 2025 17:13:31 +0800 Subject: [PATCH] feat: code --- backend/apps/db/db.py | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/backend/apps/db/db.py b/backend/apps/db/db.py index 2c00bcaf..b051d787 100644 --- a/backend/apps/db/db.py +++ b/backend/apps/db/db.py @@ -254,20 +254,17 @@ def get_fields(ds: CoreDatasource, table_name: str = None): def exec_sql(ds: CoreDatasource | AssistantOutDsSchema, sql: str): - session = get_session(ds) - result = session.execute(text(sql)) - try: - columns = result.keys()._keys - res = result.fetchall() - result_list = [ - {columns[i]: float(value) if isinstance(value, Decimal) else value for i, value in enumerate(tuple_item)} - for tuple_item in res - ] - return {"fields": columns, "data": result_list, "sql": bytes.decode(base64.b64encode(bytes(sql, 'utf-8')))} - except Exception as ex: - raise ex - finally: - if result is not None: - result.close() - if session is not None: - session.close() + with get_session(ds) as session: + with session.execute(text(sql)) as result: + try: + columns = result.keys()._keys + res = result.fetchall() + result_list = [ + {columns[i]: float(value) if isinstance(value, Decimal) else value for i, value in + enumerate(tuple_item)} + for tuple_item in res + ] + return {"fields": columns, "data": result_list, + "sql": bytes.decode(base64.b64encode(bytes(sql, 'utf-8')))} + except Exception as ex: + raise ex