开发者社区> 问答> 正文

Python-SDK的表操作

表格存储的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

展开
收起
云栖大讲堂 2017-10-25 16:56:23 2350 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
Python系列直播第一讲——Python中的一切皆对象 立即下载
Python 脚本速查手册 立即下载
低代码开发师(初级)实战教程 立即下载