更新时间:2026-01-06 GMT+08:00
分享

发送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)

相关文档