@@ -103,6 +103,8 @@ class ResultSet(MyBaseModel):
103
103
Rows : List [Dict [str , Any ]] = Field (description = "List of rows, where each row is a dictionary of column_name: value" )
104
104
MarkdownTable : Optional [str ] = Field (default = None , description = "Data formatted as a Markdown table string" )
105
105
Success : bool = Field (description = "Whether this result set was successfully retrieved" )
106
+ Message : str = Field (description = "Additional message returned" )
107
+
106
108
107
109
class ExecuteScriptResult (MyBaseModel ):
108
110
RequestId : str = Field (description = "Unique request identifier" )
@@ -115,7 +117,7 @@ def __str__(self) -> str:
115
117
if first_result .Success and first_result .MarkdownTable :
116
118
return first_result .MarkdownTable
117
119
elif not first_result .Success :
118
- return "The first result set was not successful."
120
+ return first_result . Message
119
121
else :
120
122
return "Result data is not available in Markdown format."
121
123
elif not self .Success :
@@ -266,7 +268,7 @@ async def get_meta_table_detail_info(
266
268
raise
267
269
268
270
def _format_as_markdown_table (column_names : List [str ], rows : List [Dict [str , Any ]]) -> str :
269
- if not column_names or not rows : return ""
271
+ if not column_names : return ""
270
272
header = "| " + " | " .join (column_names ) + " |"
271
273
separator = "| " + " | " .join (["---" ] * len (column_names )) + " |"
272
274
table_rows_str = [header , separator ]
@@ -296,15 +298,16 @@ async def execute_script(
296
298
markdown_table = _format_as_markdown_table (column_names , rows_data )
297
299
processed_results .append (
298
300
ResultSet (ColumnNames = column_names , RowCount = res_item .get ('RowCount' , 0 ), Rows = rows_data ,
299
- MarkdownTable = markdown_table , Success = True ))
301
+ MarkdownTable = markdown_table , Success = True , Message = '' ))
300
302
else :
301
303
processed_results .append (
302
- ResultSet (ColumnNames = [], RowCount = 0 , Rows = [], MarkdownTable = None , Success = False ))
304
+ ResultSet (ColumnNames = [], RowCount = 0 , Rows = [], MarkdownTable = None , Success = False , Message = res_item . get ( 'Message' ) ))
303
305
return ExecuteScriptResult (RequestId = data .get ('RequestId' , "" ), Results = processed_results ,
304
306
Success = data .get ('Success' , False ))
305
307
except Exception as e :
306
308
logger .error (f"Error in execute_script: { e } " )
307
- raise
309
+ if "The instance is not in secure hosting mode" in str (e ):
310
+ return "当前实例尚未开启安全托管功能。您可以通过DMS控制台免费开启「安全托管模式」。请注意,该操作需要管理员或DBA身份权限。"
308
311
309
312
async def nl2sql (
310
313
database_id : str = Field (description = "DMS databaseId" ),
0 commit comments