全部产品
表格存储

表操作

更新时间:2017-09-20 15:15:56   分享:   

表格存储的SDK提供了 CreateTable、ListTable、DeleteTable、UpdateTable 和 DescribeTable 等表级别的操作接口。

创建表(CreateTable)

根据给定的表的结构信息创建相应的表。

创建表格存储的表时必须指定表的主键。主键包含 1~4 个主键列,每一个主键列都有名字和类型。

接口

  1. 说明:根据表信息创建表。
  2. ``table_meta``是``tablestore.metadata.TableMeta``类的实例,它包含表名和PrimaryKeyschema
  3. 请参考``TableMeta``类的文档。当创建了一个表之后,通常要等待1分钟时间使partition load完成,才能进行各种操作。
  4. ``table_options``是``tablestore.metadata.TableOptions``类的示例,它包含time_to_livemax_versionmax_time_deviation三个参数。
  5. ``reserved_throughput``是``tablestore.metadata.ReservedThroughput``类的实例,表示预留读写吞吐量。
  6. 返回:无。
  7. def create_table(self, table_meta, reserved_throughput):

提示:

表格存储的表在被创建之后需要几秒钟进行加载,创建成功后需要等待几秒钟后再做其他操作。

示例

创建一个有 2 个主键列,数据保留1年(60 * 60 * 24 * 365=31536000秒),最大版本数3,写入时间戳偏移小于1天(86400秒),预留读写吞吐量为 (0,0) 的表。

  1. # 创建主键列的schema,包括PK的个数,名称和类型
  2. # 第一个PK列为整数,名称是pk0,这个同时也是分片列
  3. # 第二个PK列为字符串,名称是pk1
  4. schema_of_primary_key = [('pk0', 'INTEGER'), ('pk1', 'STRING')]
  5. # 通过表名和主键列的schema创建一个tableMeta
  6. table_meta = TableMeta('SampleTable', schema_of_primary_key)
  7. # 创建TableOptions,数据保留31536000秒,超过后自动删除;最大3个版本;写入时指定的版本值和当前标准时间相差不能超过1天。
  8. table_options = TableOptions(31536000, 3, 86400)
  9. # 设定预留读吞吐量为0,预留写吞吐量为0
  10. reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))
  11. # 调用client的create_table接口,如果没有抛出异常,则说明成功,否则失败
  12. try:
  13. ots_client.create_table(table_meta, table_options, reserved_throughput)
  14. print "create table succeeded"
  15. # 处理异常
  16. except Exception:
  17. print "create table failed."

提示:

详细代码:CreateTable@GitHub

列出表名称(ListTable)

获取当前实例下已创建的所有表的表名。

接口

  1. """
  2. 说明:获取所有表名的列表。
  3. 返回:表名列表。
  4. ``table_list``表示获取的表名列表,类型为tuple,如:('MyTable1', 'MyTable2')。
  5. """
  6. def list_table(self):

示例

获取实例下的所有表名。

  1. try:
  2. list_response = ots_client.list_table()
  3. print 'table list:'
  4. for table_name in list_response:
  5. print table_name
  6. print "list table succeeded"
  7. except Exception:
  8. print "list table failed."

提示:

详细代码:ListTable@GitHub

更新表(UpdateTable)

更新指定表的预留读吞吐量或预留写吞吐量设置。

接口

  1. """
  2. 说明:更新表属性,目前只支持修改预留读写吞吐量。
  3. ``table_name``是对应的表名。
  4. ``table_options``是``tablestore.metadata.TableOptions``类的示例,它包含time_to_live,max_version和max_time_deviation三个参数。
  5. ``reserved_throughput``是``ots2.metadata.ReservedThroughput``类的实例,表示预留读写吞吐量。
  6. 返回:针对该表的预留读写吞吐量的最近上调时间、最近下调时间和当天下调次数。
  7. ``update_table_response``表示更新的结果,是ots2.metadata.UpdateTableResponse类的实例。
  8. """
  9. def update_table(self, table_name, table_options, reserved_throughput):

示例

更新表的最大版本数为5。

  1. # 设定新的预留读吞吐量为0,写吞吐量为0。
  2. reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))
  3. # 创建TableOptions,数据保留31536000秒,超过后自动删除;最大5个版本;写入时指定的版本值和当前标准时间相差不能超过1天。
  4. table_options = TableOptions(31536000, 5, 86400)
  5. try:
  6. # 调用接口更新表的预留读写吞吐量
  7. ots_client.update_table('SampleTable', reserved_throughput)
  8. # 没有抛出异常,则说明执行成功
  9. print "update table succeeded"
  10. except Exception:
  11. # 如果抛出异常,则说莫执行失败,打印出错误信息
  12. print "update table failed"

提示:

详细代码:UpdateTable@GitHub

查询表描述信息(DescribeTable)

查询指定表的结构信息和预留读/写吞吐量设置信息。

接口

  1. """
  2. 说明:获取表的描述信息。
  3. ``table_name``是对应的表名。
  4. 返回:表的描述信息。
  5. ``describe_table_response``表示表的描述信息,是ots2.metadata.DescribeTableResponse类的实例。
  6. """
  7. def describe_table(self, table_name):

示例

获取表的描述信息。

  1. try:
  2. describe_response = ots_client.describe_table('myTable')
  3. # 如果没有抛出异常,则认为执行成功,下面打印表格信息
  4. print "describe table succeeded."
  5. print ('TableName: %s' % describe_response.table_meta.table_name)
  6. print ('PrimaryKey: %s' % describe_response.table_meta.schema_of_primary_key)
  7. print ('Reserved read throughput: %s' % describe_response.reserved_throughput_details.capacity_unit.read)
  8. print ('Reserved write throughput: %s' % describe_response.reserved_throughput_details.capacity_unit.write)
  9. print ('Last increase throughput time: %s' % describe_response.reserved_throughput_details.last_increase_time)
  10. print ('Last decrease throughput time: %s' % describe_response.reserved_throughput_details.last_decrease_time)
  11. print ('table options\'s time to live: %s' % describe_response.table_options.time_to_live)
  12. print ('table options\'s max version: %s' % describe_response.table_options.max_version)
  13. print ('table options\'s max_time_deviation: %s' % describe_response.table_options.max_time_deviation)
  14. except Exception:
  15. # 如果抛出异常则执行失败,处理异常
  16. print "describe table failed."

提示:

详细代码:DescribeTable@GitHub

删除表(DeleteTable)

删除本实例下指定的表。

接口

  1. """
  2. 说明:根据表名删除表。
  3. ``table_name``是对应的表名。
  4. 返回:无。
  5. """
  6. def delete_table(self, table_name):

示例

删除表。

  1. try:
  2. # 调用接口删除表SampleTable
  3. ots_client.delete_table('SampleTable')
  4. # 如果没有抛出异常,则执行成功
  5. print "delete table succeeded"
  6. # 如果抛出异常,则执行失败,处理异常
  7. except Exception:
  8. print "delete table failed"

提示:

详细代码:DeleteTable@GitHub

本文导读目录
本文导读目录
以上内容是否对您有帮助?