@@ -230,19 +230,26 @@ def updateField(session: SessionDep, field: CoreField):
230230
231231
232232def preview (session : SessionDep , id : int , data : TableObj ):
233+ if data .fields is None or len (data .fields ) == 0 :
234+ return {"fields" : [], "data" : [], "sql" : '' }
235+
236+ fields = [f .field_name for f in data .fields if f .checked ]
237+ if fields is None or len (fields ) == 0 :
238+ return {"fields" : [], "data" : [], "sql" : '' }
239+
233240 ds = session .query (CoreDatasource ).filter (CoreDatasource .id == id ).first ()
234241 conf = DatasourceConf (** json .loads (aes_decrypt (ds .configuration ))) if ds .type != "excel" else get_engine_config ()
235242 sql : str = ""
236243 if ds .type == "mysql" :
237- sql = f"""SELECT `{ "`, `" .join ([ f . field_name for f in data . fields if f . checked ] )} ` FROM `{ data .table .table_name } ` LIMIT 100"""
244+ sql = f"""SELECT `{ "`, `" .join (fields )} ` FROM `{ data .table .table_name } ` LIMIT 100"""
238245 elif ds .type == "sqlServer" :
239- sql = f"""SELECT [{ "], [" .join ([ f . field_name for f in data . fields if f . checked ] )} ] FROM [{ conf .dbSchema } ].[{ data .table .table_name } ]
246+ sql = f"""SELECT [{ "], [" .join (fields )} ] FROM [{ conf .dbSchema } ].[{ data .table .table_name } ]
240247 ORDER BY [{ data .fields [0 ].field_name } ]
241248 OFFSET 0 ROWS FETCH NEXT 100 ROWS ONLY"""
242249 elif ds .type == "pg" or ds .type == "excel" :
243- sql = f"""SELECT "{ '", "' .join ([ f . field_name for f in data . fields if f . checked ] )} " FROM "{ conf .dbSchema } "."{ data .table .table_name } " LIMIT 100"""
250+ sql = f"""SELECT "{ '", "' .join (fields )} " FROM "{ conf .dbSchema } "."{ data .table .table_name } " LIMIT 100"""
244251 elif ds .type == "oracle" :
245- sql = f"""SELECT "{ '", "' .join ([ f . field_name for f in data . fields if f . checked ] )} " FROM "{ conf .dbSchema } "."{ data .table .table_name } "
252+ sql = f"""SELECT "{ '", "' .join (fields )} " FROM "{ conf .dbSchema } "."{ data .table .table_name } "
246253 ORDER BY "{ data .fields [0 ].field_name } "
247254 OFFSET 0 ROWS FETCH NEXT 100 ROWS ONLY"""
248255 return exec_sql (ds , sql )
0 commit comments