OTSClient是表格存储服务的客户端,它为调用者提供了一系列的方法,可以用来操作表、读写单行数据、读写多行数据等。使用Python SDK发起请求,您需要初始化一个OTSClient实例,并根据需要修改OTSClient的默认配置项。
注意事项
表格存储从Python SDK 2.0.8版本开始支持HTTPS。如果要使用HTTPs协议访问表格存储资源,请使用Python SDK 2.0.8及以上版本,并且确保OpenSSL版本最少为0.9.8j,推荐OpenSSL 1.0.2d。
Python SDK 2.0.8发布包中包含了certifi包直接安装使用。如果需要更新根证书请从根证书下载最新的根证书。
重要表格存储Python SDK从6.0.0版本开始仅支持Python 3,不再支持Python 2。
推荐的Python3版本:Python 3.8、Python 3.9、Python 3.10、Python 3.11和Python 3.12。
如果您需要使用Python 2,请您选择5.4.4版本之前的表格存储Python SDK。
请在执行功能代码时,确保已引入tablestore包。
准备工作
初始化OTSClient前,您需要完成获取实例Endpoint、安装表格存储Python SDK和配置访问凭证的准备工作。
获取实例Endpoint
安装表格存储Python SDK
配置访问凭证
初始化OTSClient
使用表格存储的SDK时,您必须首先构造一个OTSClient,通过调用该OTSClient的接口来访问表格存储服务。
接口
"""
初始化``OTSClient``实例。
``end_point``是表格存储服务的地址(例如'https://instance.cn-hangzhou.ots.aliyun.com'),必须以'https://'开头。
``access_key_id``是访问表格存储服务的AccessKeyID,通过官方网站申请或通过管理员获取。
``access_key_secret``是访问表格存储服务的AccessKeySecret,通过官方网站申请或通过管理员获取。
``instance_name``是要访问的实例名,通过官方网站控制台创建或通过管理员获取。
``sts_token``是访问表格存储服务的STS token,从阿里云STS服务获取,具有有效期,过期后需要重新获取。
``encoding``请求参数的字符串编码类型,默认值为utf8。
``socket_timeout``是连接池中每个连接的Socket超时,单位为秒,可以为int或float。默认值为50。
``max_connection``是连接池的最大连接数。默认值为50。
``logger_name``用来在请求中打印DEBUG日志,或者在出错时打印ERROR日志。
``retry_policy``定义了重试策略,默认的重试策略为DefaultRetryPolicy。你您可以继承RetryPolicy来实现自己的重试策略,详情请参见DefaultRetryPolicy的代码。
``ssl_version``定义了HTTPS连接使用的TLS版本,默认值为None。
"""
class OTSClient(object):
def __init__(self, end_point, access_key_id, access_key_secret, instance_name, **kwargs):
示例
阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。本示例以将AccessKey、SecurityToken保存在环境变量中来实现身份验证为例介绍。
使用AK初始化
运行本代码示例之前,请确保已设置环境变量OTS_AK_ENV
和OTS_SK_ENV
。更多信息,请参见配置访问凭证。
end_point = 'yourEndpoint'
instance_name = 'yourInstance'
access_key_id = os.getenv("OTS_AK_ENV")
access_key_secret = os.getenv("OTS_SK_ENV")
# 设置日志文件名称和重试策略
# 日志文件名称为table_store.log,重试策略是WriteRetryPolicy,会对写重试。
ots_client = OTSClient(end_point, access_key_id, access_key_secret, instance_name, logger_name='table_store.log', retry_policy=WriteRetryPolicy())
# 设置HTTPS连接所使用的TLS版本为TLSv1.2
# 注意:只有当endpoint使用HTTPS形式时,TLS版本配置才会生效。
ots_client = OTSClient(end_point, access_key_id, access_key_secret, instance_name, ssl_version=ssl.PROTOCOL_TLSv1_2)
使用STS初始化
运行本代码示例之前,请确保已设置环境变量OTS_AK_ENV
、OTS_SK_ENV
和 OTS_SESSION_TOKEN
。更多信息,请参见配置访问凭证。
end_point = 'yourEndpoint'
instance_name = 'yourInstance'
access_key_id = os.getenv("OTS_AK_ENV")
access_key_secret = os.getenv("OTS_SK_ENV")
sts_token = os.getenv("OTS_SESSION_TOKEN")
ots_client = OTSClient(end_point, access_key_id, access_key_secret, instance_name, sts_token=sts_token)
使用credentials工具
运行本代码示例之前,请确保已完成以下的配置。
执行如下命令安装alibabacloud_credentials包。
pip install alibabacloud_credentials
配置环境变量。
如果使用AK,请确保已设置环境变量
ALIBABA_CLOUD_ACCESS_KEY_ID
和ALIBABA_CLOUD_ACCESS_KEY_SECRET
。如果使用STS,请确保已设置环境变量
ALIBABA_CLOUD_ACCESS_KEY_ID
、ALIBABA_CLOUD_ACCESS_KEY_SECRET
和ALIBABA_CLOUD_SECURITY_TOKEN
。
end_point = 'yourEndpoint'
instance_name = 'yourInstance'
# 使用CredClient从环境变量中读取凭证。
cred = CredClient()
access_key_id = cred.get_access_key_id()
access_key_secret = cred.get_access_key_secret()
ots_client = OTSClient(end_point, access_key_id, access_key_secret, instance_name)
引入tablestore包
如果不引入tablestore包,则会出现NameError: name ‘OTSClient’ is not defined
提示,请引入tablestore包后运行即可。更多信息,请参见Python SDK ListTable示例。
在使用Python SDK调用功能函数时,您必须在代码中引入tablestore包。引入tablestore包的具体代码如下:
# 引入Tablestore包。
from tablestore import *
# 通过环境变量获取AccessKey时需要引入。
import os
# 通过指定TLS版本访问时需要引入。
import ssl