# Python SDK

# 1. 使用前必读

iS3二次开发软件开发工具包(iS3 Software Development Kit)是对平台提供服务进行的封装,以简化用户的开发工作。用户通过添加依赖或下载的方式调用API即可实现使用平台业务能力的目的,以下内容为Python SDK,Node.js SDK见SDK(Node.js) (opens new window)

# 2. 如何调用SDK

# 2.1 准备环境

在使用iS3二次开发包SDK时,各语言需要准备的环境 参照下表

开发语言 准备项 说明
PYTHON 安装python (opens new window) python版本sdk支持python3.10及以上。
Node.js 安装Node.js (opens new window) Node.js版本sdk支持Node.js 8.x版本。

# 2.2 申请账号

申请iS3平台的租户和用户账号,并成功登录iS3数字在线页面 (opens new window)

# 2.3 认证鉴权

REST API调用方式类似,需要获取AK/SK来认证鉴权

AK/SK认证(静态令牌校验):通过AK(Access Key ID)/SK(Secret Access Key)加密调用请求。适用于分析服务和应用等后端自动访问接口的场景,可通过如下方式获取:

  • 点击右上角 AK/SK管理
    • img
  • 可以选择一个已有的,复制获得AK SK信息
    • img

    • 或点击新增,输入该令牌的名称和描述信息,新增一个访问令牌

# 3. 接口调用方式

以下面第一个接口为例

from is3_python_sdk.data_query import iS3PythonApi
is3Api = iS3PythonApi(dataDto.headers, self.iS3Addr, dataDto.prjId)
query = {} # 请求体
response1 = is3Api.getMetaTableList(query)

# 3.1 查询metatable列表数据

接口方法:getMetaTableList(jsonData)

时序数据请求json结构体

{
    "pageNumber": 1,  # 查询哪一页
    "pageSize": 13,   # 每页展示的数据量
    "prjId": "1821553930207760386",   # 项目id
    "desc": true,  # 是否降序
    "metaTableCode": "monVideo",   # 元数据编码
    "whereConditions": [  # 查询条件
        {
            "column": "sys_id",
            "logic": "GT",   # GT:表示大于;EQUALS:表示等于;LT:表示小于
            "value": ""
        }
    ]
}

非时序数据请求json结构体

{
    "pageNumber": 1,
    "pageSize": 13,
    "prjId": "1821553930207760386",
    "desc": true,
    "metaTableCode": "monAlarmResult",
    "startTime": "2024-10-30 11:43:21",
    "endTime": "2024-11-29 11:43:21"
}

# 3.2 查询对象组列表 (查询iS3PythonAPi实例化时项目下的数据)

接口方法:getObjectList()

# 3.3 查询对象组的对象实例列表

接口方法:getObjsInstanceList(objsCode)

请求参数:

查询对象组的对象实例列表。
    参数:
    objsCode (str): 对象组编码。

# 3.4 查询对象组的对象实例列表

接口方法:getObjsSubTypeList(objsCode)

请求参数:

查询子类型列表
    参数:
    objsCode (str): 对象组编码。

# 3.5 查询对象组的对象实例列表

接口方法:getObjsSubDataList(objsCode, objCode, subMetaCode, jsonData)

请求参数:

查询子类型数据
    参数:
        objsCode (str): 对象组代码。
        objCode (str): 对象编码。
        subMetaCode (str): 子类型元数据编码。
        jsonData (dict): 额外的请求参数,以 JSON 格式传递。包括分页、时间范围、比较条件等。

        示例 json:
        {
            "pageNumber": 1,  # 当前页码
            "pageSize": 10,  # 每页显示的数据条数
            "startTime": "2024-07-01 15:53:32",  # 查询开始时间
            "endTime": "2024-09-01 15:53:32",  # 查询结束时间
            "keyValueCompareEnum": [],  # 关键值比较条件
            "desc": True  # 是否按降序排列
        }

# 3.6 创建本地临时文件夹

接口方法:preDirectory()

# 3.7 预下载

接口方法:preDownload(jsonData, outputFolderPath)

请求参数:

文件预下载到指定目录,local进行copy,online进行下载。
    :param jsonData: 要处理的 JSON 数据,应该是字典或列表。
    :param outputFolderPath: 输出文件夹路径。

# 3.8 将 JSON 字符串保存到指定的文件中

接口方法:saveJsonToFile(jsonString, filePath)

请求参数:

将 JSON 字符串保存到指定的文件中。
    :param jsonString: 要保存到文件的 JSON 字符串。
    :param filePath: 保存 JSON 数据的文件路径。

# 3.9 数据插入-支持批量

接口方法:addData(jsonData)

请求参数:


# 3.10 数据删除-支持批量

接口方法:addData(jsonData)

请求参数:


# 3.11 发送心跳

接口方法:asendHeartbeat(jsonData)

请求参数:

参数:
json (dict)
    示例 json:
    {
        "customCode"(str),  # 自定义编码
        "data"(array(dict)),  # 数据列表
    }

# 3.12 根据自定义编码查询任务流编码

接口方法:getProcessCode(customCode)

请求参数:

customCode

# 3.13 通过自定义编码运行任务流

接口方法:startTaskSchedulingByCustomCode(jsonData)

请求参数:

json (dict)
    示例 json:
    {
        "customCode"(str),  # 自定义编码
        "data"(array(dict)),  # 数据列表
    }

# 3.14 Minio 文件上传

接口方法:uploadFile**(filePath)**

请求参数:

Minio 文件上传。
    参数:
    filePath (str): 需要上传的文件路径,包括文件名和扩展名。例如 'E:/uploads/myfile.png'。

# 3.15 Minio 文件夹所有文件及子文件夹中文件上传(返回url带有目录地址)

接口方法:uploadFilesByPathByRecursion(path, base_dir)

请求参数:

上传目录下文件到指定目录minio(递归调用并根据递归目录设置返回url)
    :param path: 自定义存储文件路径
    :param filePaths: 需要上传的文件路径目录

# 3.16 Minio 当前文件夹所有文件上传(单个文件夹内所有文件(非递归))

接口方法:uploadFilesByPath(path, base_dir)

请求参数:

上传目录下文件到指定目录minio  
    :param path: 自定义存储文件路径
    :param filePaths: 需要上传的文件路径目录

# 3.17 获取metaData(用于执行任务流,任务回调)

接口方法:getMetaData

请求参数:无