表格存储的SDK提供了 CreateTable、ListTable、DeleteTable、UpdateTable 和 DescribeTable 等表级别的操作接口。
创建表(CreateTable)
根据给定的表的结构信息创建相应的表。
创建表格存储的表时必须指定表的主键。主键包含 1~4 个主键列,每一个主键列都有名字和类型。
接口说明:根据表信息创建表。
``table_meta``是``tablestore.metadata.TableMeta``类的实例,它包含表名和PrimaryKey的schema,
请参考``TableMeta``类的文档。当创建了一个表之后,通常要等待1分钟时间使partition load完成,才能进行各种操作。
``table_options``是``tablestore.metadata.TableOptions``类的示例,它包含time_to_live,max_version和max_time_deviation三个参数。
``reserved_throughput``是``tablestore.metadata.ReservedThroughput``类的实例,表示预留读写吞吐量。
返回:无。
def create_table(self, table_meta, reserved_throughput):
提示:
表格存储的表在被创建之后需要几秒钟进行加载,创建成功后需要等待几秒钟后再做其他操作。
示例
创建一个有 2 个主键列,数据保留1年(60 * 60 * 24 * 365=31536000秒),最大版本数3,写入时间戳偏移小于1天(86400秒),预留读写吞吐量为 (0,0) 的表。
# 创建主键列的schema,包括PK的个数,名称和类型
# 第一个PK列为整数,名称是pk0,这个同时也是分片列
# 第二个PK列为字符串,名称是pk1
schema_of_primary_key = [('pk0', 'INTEGER'), ('pk1', 'STRING')]
# 通过表名和主键列的schema创建一个tableMeta
table_meta = TableMeta('SampleTable', schema_of_primary_key)
# 创建TableOptions,数据保留31536000秒,超过后自动删除;最大3个版本;写入时指定的版本值和当前标准时间相差不能超过1天。
table_options = TableOptions(31536000, 3, 86400)
# 设定预留读吞吐量为0,预留写吞吐量为0
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))
# 调用client的create_table接口,如果没有抛出异常,则说明成功,否则失败
try:
ots_client.create_table(table_meta, table_options, reserved_throughput)
print "create table succeeded"
# 处理异常
except Exception:
print "create table failed."
提示:
详细代码:
CreateTable@GitHub。
列出表名称(ListTable)
获取当前实例下已创建的所有表的表名。
接口"""
说明:获取所有表名的列表。
返回:表名列表。
``table_list``表示获取的表名列表,类型为tuple,如:('MyTable1', 'MyTable2')。
"""
def list_table(self):
示例
获取实例下的所有表名。
try:
list_response = ots_client.list_table()
print 'table list:'
for table_name in list_response:
print table_name
print "list table succeeded"
except Exception:
print "list table failed."
提示:
详细代码:
ListTable@GitHub。
更新表(UpdateTable)
更新指定表的预留读吞吐量或预留写吞吐量设置。
接口"""
说明:更新表属性,目前只支持修改预留读写吞吐量。
``table_name``是对应的表名。
``table_options``是``tablestore.metadata.TableOptions``类的示例,它包含time_to_live,max_version和max_time_deviation三个参数。
``reserved_throughput``是``ots2.metadata.ReservedThroughput``类的实例,表示预留读写吞吐量。
返回:针对该表的预留读写吞吐量的最近上调时间、最近下调时间和当天下调次数。
``update_table_response``表示更新的结果,是ots2.metadata.UpdateTableResponse类的实例。
"""
def update_table(self, table_name, table_options, reserved_throughput):
示例
更新表的最大版本数为5。
# 设定新的预留读吞吐量为0,写吞吐量为0。
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))
# 创建TableOptions,数据保留31536000秒,超过后自动删除;最大5个版本;写入时指定的版本值和当前标准时间相差不能超过1天。
table_options = TableOptions(31536000, 5, 86400)
try:
# 调用接口更新表的预留读写吞吐量
ots_client.update_table('SampleTable', reserved_throughput)
# 没有抛出异常,则说明执行成功
print "update table succeeded"
except Exception:
# 如果抛出异常,则说莫执行失败,打印出错误信息
print "update table failed"
提示:
详细代码:
UpdateTable@GitHub。
查询表描述信息(DescribeTable)
查询指定表的结构信息和预留读/写吞吐量设置信息。
接口"""
说明:获取表的描述信息。
``table_name``是对应的表名。
返回:表的描述信息。
``describe_table_response``表示表的描述信息,是ots2.metadata.DescribeTableResponse类的实例。
"""
def describe_table(self, table_name):
示例
获取表的描述信息。
try:
describe_response = ots_client.describe_table('myTable')
# 如果没有抛出异常,则认为执行成功,下面打印表格信息
print "describe table succeeded."
print ('TableName: %s' % describe_response.table_meta.table_name)
print ('PrimaryKey: %s' % describe_response.table_meta.schema_of_primary_key)
print ('Reserved read throughput: %s' % describe_response.reserved_throughput_details.capacity_unit.read)
print ('Reserved write throughput: %s' % describe_response.reserved_throughput_details.capacity_unit.write)
print ('Last increase throughput time: %s' % describe_response.reserved_throughput_details.last_increase_time)
print ('Last decrease throughput time: %s' % describe_response.reserved_throughput_details.last_decrease_time)
print ('table options\'s time to live: %s' % describe_response.table_options.time_to_live)
print ('table options\'s max version: %s' % describe_response.table_options.max_version)
print ('table options\'s max_time_deviation: %s' % describe_response.table_options.max_time_deviation)
except Exception:
# 如果抛出异常则执行失败,处理异常
print "describe table failed."
提示:
详细代码:
DescribeTable@GitHub。
删除表(DeleteTable)
删除本实例下指定的表。
接口"""
说明:根据表名删除表。
``table_name``是对应的表名。
返回:无。
"""
def delete_table(self, table_name):
示例
删除表。
try:
# 调用接口删除表SampleTable
ots_client.delete_table('SampleTable')
# 如果没有抛出异常,则执行成功
print "delete table succeeded"
# 如果抛出异常,则执行失败,处理异常
except Exception:
print "delete table failed"
提示:
详细代码:
DeleteTable@GitHub。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。