
# 创建Session
- 功能介绍：Session(会话)表示一个连接，用户可以通过一个Session执行SQL请求，并通过该Session查询请求结果。该方法可以通过用户提供的工作空间id和端点id创建一个Session，可以设置Session连接的lakeformation实例信息和catalog名称。
- 方法定义：createSession(workspaceId, request, timeout)
- 参数说明：
  表1createSession参数说明 
  | 参数名称        | 参数类型           | 是否必选 | 描述                   |
  |:---|:---|:---|:---|
  | workspaceId | str            | 必选   | 用户创建的Fabric的工作空间的ID。 |
  | request     | SessionRequest | 必选   | Session请求信息。         |
  | timeout     | float          | 可选   | 请求超时时间。              |
     
  表2SessionRequest 
  | 参数名称         | 参数类型 | 是否必选 | 描述                                                      |
  |:---|:---|:---|:---|
  | endpoint_id  | str  | 必选   | 执行端点ID。                                                 |
  | instance_id  | str  | 必选   | LakeFormation实例ID。                                      |
  | catalog_name | str  | 必选   | LakeFormation Catalog名称。                                |
  | wait_timeout | str  | 可选   | 创建Session排队等待时间，单位秒，取值范围\[300，7200\]，有值则为异步创建，不填则为同步创建。 |
     
  
- 响应体说明：返回SessionResponse
  表3SessionResponse 
  | 参数名称       | 参数类型 | 描述             |
  |:---|:---|:---|
  | session_id | str  | 创建的Session的ID。 |
  | status     | str  | 该Session的状态。   |
     
  表4status取值 
  | 状态值      | 描述  |
  |:---|:---|
  | RUNNING  | 运行中 |
  | CLOSED   | 已关闭 |
  | WAITING  | 等待中 |
  | CREATING | 创建中 |
  | FAIL     | 失败  |
     
  
- 示例代码：
  ```
  import os
  from fabricsql.SQLClient import FabricSQLClient
  from fabricsql.SQLRequests import SessionRequest, QueryRequest
  from fabricsql.response.SessionResponses import SessionResponse
  if __name__ == "__main__":
      # AK/SK属于敏感信息，推荐通过环境变量方式获取，避免直接明文编码在程序中
      endpoint = 'xxxxxxxxxxxxxx'
      accessKey = 'xxxxxxxxxxxxxx'
      secretKey = 'xxxxxxxxxxxxxxx'
      workspace_id = 'xxxxxxxxxxxxx'
      client = FabricSQLClient(endpoint, accessKey, secretKey)
      # 创建一个Session
      request = SessionRequest()
      request.endpoint_id = 'xxxxx'
      request.instance_id = 'xxxxxx'
      request.catalog = 'xxxxxxxxx'
      response = client.createSession(workspace_id, request)
      print(response.session_id)
      print(response.status)
  ```
  
 
