
# 发送SQL请求
- 功能介绍：通过一个Session下发SQL请求，用户需要提供工作空间ID和会话ID，并创建请求体信息。
- 方法定义：executeQuery(workspaceId, request, timeout)
- 参数说明：
  表1executeQuery参数说明 
  | 参数名称        | 参数类型         | 是否必选 | 描述                   |
  |:---|:---|:---|:---|
  | workspaceId | str          | 必选   | 用户创建的Fabric的工作空间的ID。 |
  | request     | QueryRequest | 必选   | SQL请求类。              |
  | timeout     | float        | 可选   | 请求超时时间。              |
     
  表2QueryRequest 
  | 参数名称       | 参数类型                | 是否必选 | 描述           |
  |:---|:---|:---|:---|
  | statement  | str                 | 必选   | 发送SQL内容。     |
  | session_id | str                 | 必选   | 会话ID。        |
  | limit      | int                 | 可选   | SQL limit限制。 |
  | bindings   | list\[list\[str\]\] | 可选   | 参数绑定。        |
     
  ![](https://support.huaweicloud.com/sdkreference-fabric/public_sys-resources/note_3.0-zh-cn.png)
  如果需要一次执行多语句，statement字段的SQL语句请使用分号（;）隔开，例如：select \* from a; select \* from b; select \* from c
  
- 响应体说明：返回请求响应体QueryResponse
  表3QueryResponse 
  | 参数名称         | 参数类型 | 描述          |
  |:---|:---|:---|
  | status       | int  | 整个SQL的执行状态。 |
  | session_id   | str  | 会话ID。       |
  | statement_id | str  | 语句ID。       |
     
  表4QueryResponse的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)
  ```
  
 
