From 6a5500322ce694d056e5279af44577cc81b0380a Mon Sep 17 00:00:00 2001 From: junjun Date: Mon, 28 Jul 2025 16:33:48 +0800 Subject: [PATCH 1/2] feat: ds excel --- backend/apps/datasource/api/datasource.py | 53 ++++++++++++----------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/backend/apps/datasource/api/datasource.py b/backend/apps/datasource/api/datasource.py index 7642c221..99adf2a1 100644 --- a/backend/apps/datasource/api/datasource.py +++ b/backend/apps/datasource/api/datasource.py @@ -18,12 +18,14 @@ from ..models.datasource import CoreDatasource, CreateDatasource, TableObj, Core router = APIRouter(tags=["datasource"], prefix="/datasource") path = "/opt/sqlbot/data/excel" + @router.get("/ws/{oid}", include_in_schema=False) async def query_by_oid(session: SessionDep, user: CurrentUser, oid: int) -> List[CoreDatasource]: if not user.isAdmin: raise Exception("no permission to execute") return get_datasource_list(session=session, user=user, oid=oid) + @router.get("/list") async def datasource_list(session: SessionDep, user: CurrentUser): return get_datasource_list(session=session, user=user) @@ -134,32 +136,11 @@ async def upload_excel(session: SessionDep, file: UploadFile = File(...)): with open(save_path, "wb") as f: f.write(await file.read()) - conn = get_data_engine() sheets = [] - if filename.endswith(".csv"): - df = pd.read_csv(save_path) - tableName = f"sheet1_{hashlib.sha256(uuid.uuid4().bytes).hexdigest()[:10]}" - sheets.append({"tableName": tableName, "tableComment": ""}) - column_len = len(df.dtypes) - fields = [] - for i in range(column_len): - # build fields - fields.append({"name": df.columns[i], "type": str(df.dtypes[i]), "relType": ""}) - # create table - create_table(conn, tableName, fields) - - data = [ - {df.columns[i]: None if pd.isna(row[i]) else (int(row[i]) if "int" in str(df.dtypes[i]) else row[i]) - for i in range(len(row))} - for row in df.values - ] - # insert data - insert_data(conn, tableName, fields, data) - else: - df_sheets = pd.read_excel(save_path, sheet_name=None) - # build columns and data to insert db - for sheet_name, df in df_sheets.items(): - tableName = f"{sheet_name}_{hashlib.sha256(uuid.uuid4().bytes).hexdigest()[:10]}" + with get_data_engine() as conn: + if filename.endswith(".csv"): + df = pd.read_csv(save_path) + tableName = f"sheet1_{hashlib.sha256(uuid.uuid4().bytes).hexdigest()[:10]}" sheets.append({"tableName": tableName, "tableComment": ""}) column_len = len(df.dtypes) fields = [] @@ -176,7 +157,27 @@ async def upload_excel(session: SessionDep, file: UploadFile = File(...)): ] # insert data insert_data(conn, tableName, fields, data) - conn.close() + else: + df_sheets = pd.read_excel(save_path, sheet_name=None) + # build columns and data to insert db + for sheet_name, df in df_sheets.items(): + tableName = f"{sheet_name}_{hashlib.sha256(uuid.uuid4().bytes).hexdigest()[:10]}" + sheets.append({"tableName": tableName, "tableComment": ""}) + column_len = len(df.dtypes) + fields = [] + for i in range(column_len): + # build fields + fields.append({"name": df.columns[i], "type": str(df.dtypes[i]), "relType": ""}) + # create table + create_table(conn, tableName, fields) + + data = [ + {df.columns[i]: None if pd.isna(row[i]) else (int(row[i]) if "int" in str(df.dtypes[i]) else row[i]) + for i in range(len(row))} + for row in df.values + ] + # insert data + insert_data(conn, tableName, fields, data) os.remove(save_path) return {"filename": filename, "sheets": sheets} From ed797eaefd2d1a94812a6b4e762fd58596339300 Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Mon, 28 Jul 2025 16:38:46 +0800 Subject: [PATCH 2/2] fix: first update --- frontend/src/views/dashboard/editor/Toolbar.vue | 2 +- frontend/src/views/dashboard/utils/canvasUtils.ts | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/frontend/src/views/dashboard/editor/Toolbar.vue b/frontend/src/views/dashboard/editor/Toolbar.vue index 7b59d3f9..5100504a 100644 --- a/frontend/src/views/dashboard/editor/Toolbar.vue +++ b/frontend/src/views/dashboard/editor/Toolbar.vue @@ -55,7 +55,7 @@ const saveCanvasWithCheck = () => { opt: 'updateLeaf', id: dashboardInfo.value.id, name: dashboardInfo.value.name, - pid: dashboardInfo.value.pid, + pid: 'root', } saveDashboardResource(updateParams, function () { ElMessage({ diff --git a/frontend/src/views/dashboard/utils/canvasUtils.ts b/frontend/src/views/dashboard/utils/canvasUtils.ts index 4c4184de..e7c50f52 100644 --- a/frontend/src/views/dashboard/utils/canvasUtils.ts +++ b/frontend/src/views/dashboard/utils/canvasUtils.ts @@ -62,7 +62,12 @@ export const saveDashboardResource = (params: any, callBack: Function) => { canvas_view_info: JSON.stringify(canvasViewInfo.value), } dashboardApi.create_canvas(requestParams).then((res: any) => { - dashboardStore.updateDashboardInfo({ id: res.id, name: params.name, dataState: 'ready' }) + dashboardStore.updateDashboardInfo({ + id: res.id, + pid: params.pid, + name: params.name, + dataState: 'ready', + }) callBack(res) }) } else if (params.opt === 'newFolder') {