MCPcopy
hub / github.com/pmh1314520/WebRPA / execute

Method execute

backend/app/executors/database.py:86–128  ·  view source on GitHub ↗
(self, config: dict, context: ExecutionContext)

Source from the content-addressed store, hash-verified

84 return "db_query"
85
86 async def execute(self, config: dict, context: ExecutionContext) -> ModuleResult:
87 connection_name = context.resolve_value(config.get('connectionName', 'default'))
88 sql = context.resolve_value(config.get('sql', ''))
89 variable_name = context.resolve_value(config.get('variableName', ''))
90 single_row_raw = config.get('singleRow', False)
91 # 支持变量引用
92 if isinstance(single_row_raw, str):
93 single_row_raw = context.resolve_value(single_row_raw)
94 single_row = single_row_raw in [True, 'true', 'True', '1', 1]
95
96 connections = get_db_connections(context)
97 conn = connections.get(connection_name)
98
99 if not conn:
100 return ModuleResult(
101 success=False,
102 error=f"数据库连接 '{connection_name}' 不存在,请先使用「连接数据库」模块"
103 )
104
105 if not sql:
106 return ModuleResult(success=False, error="SQL语句不能为空")
107
108 try:
109 with conn.cursor() as cursor:
110 cursor.execute(sql)
111 if single_row:
112 result = cursor.fetchone()
113 else:
114 result = cursor.fetchall()
115
116 # 保存到变量
117 if variable_name:
118 context.variables[variable_name] = result
119
120 row_count = 1 if single_row and result else len(result) if result else 0
121
122 return ModuleResult(
123 success=True,
124 message=f"查询成功,返回 {row_count} 条记录",
125 data={"rowCount": row_count, "data": result}
126 )
127 except Exception as e:
128 return ModuleResult(success=False, error=f"查询失败: {str(e)}")
129
130
131@register_executor

Callers 4

executeMethod · 0.45
executeMethod · 0.45
executeMethod · 0.45
executeMethod · 0.45

Calls 4

get_db_connectionsFunction · 0.85
ModuleResultClass · 0.85
resolve_valueMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected