发送SQL请求
- 功能介绍:通过一个Session下发SQL请求,用户需要提供工作空间ID和会话ID,并创建请求体信息。
- 方法定义:executeQuery(workspaceId, request, timeout)
- 参数说明:
表1 executeQuery参数说明 参数名称
参数类型
是否必选
描述
workspaceId
str
必选
用户创建的Fabric的工作空间的ID。
request
QueryRequest
必选
SQL请求类。
timeout
float
可选
请求超时时间。
表2 QueryRequest 参数名称
参数类型
是否必选
描述
statement
str
必选
发送SQL内容。
session_id
str
必选
会话ID。
limit
int
可选
SQL limit限制。
bindings
list[list[str]]
可选
参数绑定。
如果需要一次执行多语句,statement字段的SQL语句请使用分号(;)隔开,例如:select * from a; select * from b; select * from c
- 响应体说明:返回请求响应体QueryResponse
表3 QueryResponse 参数名称
参数类型
描述
status
int
整个SQL的执行状态。
session_id
str
会话ID。
statement_id
str
语句ID。
表4 QueryResponse的status取值 状态值
描述
-1
执行失败(FAILED)。
0
执行成功(SUCCESSFUL)。
1
正在执行(RUNNING)。
2
指令执行完成,无返回值(EMPTY)。
3
正在排队等待执行(WAITING)。
- 示例代码:
import os from fabricsql.SQLClient import FabricSQLClient from fabricsql.SQLRequests import SessionRequest, QueryRequest if __name__ == "__main__": # AK/SK属于敏感信息,推荐通过环境变量方式获取,避免直接明文编码在程序中 endpoint = 'xxxxxxxxxxxxxxxxxxxxx' accessKey = 'xxxxxxxxxxxxxxxxxxx' secretKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx' workspace_id = 'xxxxxxxxxxxxxx' client = FabricSQLClient(endpoint, accessKey, secretKey) query = QueryRequest() query.statement = "SELECT * FROM pg_class" query.limit = 10 query.session_id = 'aaaa-bbbb-cccc-dddd' # 下发一个sql请求 response = client.executeQuery(workspace_id, query) print(response.session_id) print(response.statement_id) # 查看请求状态 print(response.status)