Python SDK调用示例

开发者可以通过Python SDK,调用物联网数据分析中生成的API。

步骤一:安装SDK

  1. 登录Python官方网站下载2.6.5及以上版本的Python,并按说明完成安装。

  2. (可选)安装Python的包管理工具pip。访问pip官方网站下载pip安装包,并完成安装。

    说明

    如果您已安装pip工具,请忽略此步骤。

  3. 安装IoT Python SDK。

    1. 以root权限,在开发环境中执行如下命令,安装IoT Python SDK。IoT Python SDK开源信息请参见aliyun-python-sdk-iot

      sudo pip install aliyun-python-sdk-core
      sudo pip install aliyun-python-sdk-iot
    2. 将IoT Python SDK相关文件引入到Python文件中。

      from aliyunsdkcore.client import AcsClient
      from aliyunsdkcore.acs_exception.exceptions import ClientException
      from aliyunsdkcore.acs_exception.exceptions import ServerException
      from aliyunsdkcore.http import method_type
      from aliyunsdkiot.request.v20180120.InvokeDataAPIServiceRequest import InvokeDataAPIServiceRequest

步骤二:初始化SDK

参考如下内容,初始化SDK。

说明

以下示例以华东2(上海:cn-shanghai)地域为例。您在设置时,需使用您自己的物联网平台地域。

accessKeyId = '<your accessKey>'
accessKeySecret = '<your accessSecret>'
client = client.AcsClient(accessKeyId, accessKeySecret, 'cn-shanghai')

其中,<your accessKey>为您账号的AccessKeyId,<your accessSecret>为AccessKeyId对应的AccessKeySecret。您可在阿里云官网控制台AccessKey管理中创建或查看您的AccessKey。

步骤三:发起调用

发起API调用示例如下。

request = InvokeDataAPIServiceRequest()
request.set_accept_format('json')
request.set_method(method_type.POST)
request.set_ApiSrn("your_ApiSrn")
request.set_Params([
  {
    "ParamName": "your_param_name",
    "ParamValue": "your_param_value",
    "ListParamValues":[],
    "ListParamType": "VARCHAR"
  }
])
response = client.do_action_with_exception(request)
print(response)

其中,部分参数按如下说明替换参数值。

参数

是否必选

说明

your_ApiSrn

API的资源定位符,请替换为您实际的API资源定位符。ApiSrn值的查询方法请参见如何使用数据服务

ParamName

待查询数据的请求参数名称,请将your_param_name替换为您实际的API的请求参数名称。

说明

如果API接口未配置请求参数,忽略该参数和ParamValue的配置。

ParamValue

待查询数据的请求参数值,请将your_param_value替换为您实际的API的请求参数值。

说明
  • 统一使用String类型存储,系统会跟据生成数据API时定义的ParamType转换成JDBC类型对象。 有关生成数据API的详细内容请参见生成一个数据API

  • 生成数据API时,如果API请求参数类型Type定义为ARRAY类型,则不传入该参数,而需传入ListParamType和ListParamValues。

ListParamValues

ARRAY类型的参数值列表。

说明
  • 统一使用String类型存储,系统会跟据ListParamType对应的值转换成JDBC类型对象。

  • 生成数据API时,如果API请求参数类型Type定义为非ARRAY类型,则该参数赋值为[]

详情请参见本文下方完整调用示例

ListParamType

ARRAY类型参数值的数据类型。目前仅支持VARCHAR、INTEGER、BIGINT、BOOLEAN、DECIMAL、TIMESTAMP。

完整调用示例

#!/usr/bin/env python
# coding=utf-8
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkcore.http import method_type
from aliyunsdkiot.request.v20180120.InvokeDataAPIServiceRequest import InvokeDataAPIServiceRequest
accessKey = "LTAI0********Z0"
accessSecret = "vmlXLPTPt********CCvLUB"
client = AcsClient(accessKey, accessSecret, 'cn-shanghai')
request = InvokeDataAPIServiceRequest()
request.set_accept_format('json')
request.set_method(method_type.POST)
request.set_ApiSrn("acs:iot:*:172644********564:serveapi/****")
request.set_Params([
    {
        # Array类型参数
        "ParamName": "name",
        "ListParamValues": ["television"],
        "ListParamType": "VARCHAR"  # ListParamValues中值的具体数据类型
    },
    {
        # 非Array类型参数,ListParamValues 需要赋空值
        "ParamName": "pageNo",
        "ParamValue": "0",
        "ListParamValues": []
    },
    {
        "ParamName": "pageSize",
        "ParamValue": "10",
        "ListParamValues": []
    },
])
response = client.do_action_with_exception(request)
print(response)