本文将通过参数说明和示例代码为您介绍如何使用 Python SDK 创建数据表。在创建数据表时,您需要指定数据表的结构信息和配置信息。CU 模式(原按量模式)下高性能型实例中的数据表还可以根据需要设置预留读写吞吐量。
注意事项
创建数据表后需要几秒钟进行加载,在此期间对该数据表的读写数据操作均会失败。请等待数据表加载完毕后再进行数据操作。
如果您有主键数据自增的需求,例如电商网站的商品 ID、论坛帖子的 ID 等场景,可以在创建数据时配置主键列自增。具体操作,请参见主键列自增。
前提条件
已通过控制台创建实例。具体操作,请参见创建实例。
已初始化 OTSClient。具体操作,请参见初始化 OTSClient。
接口
"""
说明:根据指定表结构信息创建数据表。
当创建一个数据表后,通常需要等待几秒钟时间使partition load完成,才能进行各种操作。
返回:无。
"""
def create_table(self, table_meta, table_options, reserved_throughput, secondary_indexes=[])
参数说明
参数 | 说明 |
table_meta(必选) | 数据表的结构信息,包括如下内容:
|
table_options(必选) | 数据表的配置信息,包括如下内容:
|
secondary_indexes(可选) | 索引列表。每个索引包含以下内容:
|
reserved_throughput(必选) | 预留读写吞吐量,单位为 CU。默认值为 0。 重要 仅 CU 模式下高性能型实例支持设置数据表的预留读写吞吐量为非零值。 |
示例
创建数据表
以下示例用于创建数据表。
# 创建数据表主键列的schema,包括主键的个数、名称和类型。
# 第一个主键列为整型,名称是pk0,该列同时也是分区键。
# 第二个主键列为整型,名称是pk1。其他可选的类型包括STRING和BINARY,此处使用INTEGER。
schema_of_primary_key = [('pk0', 'INTEGER'), ('pk1', 'INTEGER')]
# 通过数据表名称和主键列的schema创建一个tableMeta。
table_meta = TableMeta('<table_name>', schema_of_primary_key)
# 创建TableOptions,数据保留时间为31536000秒,数据超过保留时间后表格存储会自动删除超期数据,最大保存3个版本,写入时指定的版本值和当前时间相差不能超过86400秒(即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.")
创建数据表时配置二级索引
创建数据表时配置全局二级索引
以下示例用于同时创建数据表和全局二级索引。
# 创建数据表主键列的schema,包括主键的个数、名称和类型。
schema_of_primary_key = [('gid', 'INTEGER'), ('uid', 'STRING')]
# 配置数据表的预定义列。
defined_columns = [('i', 'INTEGER'), ('bool', 'BOOLEAN'), ('d', 'DOUBLE'), ('s', 'STRING'), ('b', 'BINARY')]
# 通过数据表名称和主键列的schema创建一个tableMeta。
table_meta = TableMeta('<table_name>', schema_of_primary_key, defined_columns)
# 创建TableOptions,数据永不过期,只保存1个版本数据。
table_option = TableOptions(-1, 1)
# 设置预留读吞吐量为0,预留写吞吐量为0。
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))
# 设置二级索引的索引名称、主键列和属性列。索引类型默认为全局二级索引。
secondary_indexes = [
SecondaryIndexMeta('index1', ['i', 's'], ['bool', 'b', 'd']),
]
# 调用client的create_table接口,如果没有抛出异常,则说明执行成功。
ots_client.create_table(table_meta, table_option, reserved_throughput, secondary_indexes)
创建数据表时配置本地二级索引
以下示例用于同时创建数据表和本地二级索引。
# 创建数据表主键列的schema,包括主键的个数、名称和类型。
schema_of_primary_key = [('gid', 'INTEGER'), ('uid', 'STRING')]
# 配置数据表的预定义列。
defined_columns = [('i', 'INTEGER'), ('bool', 'BOOLEAN'), ('d', 'DOUBLE'), ('s', 'STRING'), ('b', 'BINARY')]
# 通过数据表名称和主键列的schema创建一个tableMeta。
table_meta = TableMeta('<table_name>', schema_of_primary_key, defined_columns)
# 创建TableOptions,数据永不过期,只保存1个版本数据。
table_option = TableOptions(-1, 1)
# 设置预留读吞吐量为0,预留写吞吐量为0。
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))
# 设置二级索引的索引名称、主键列、索引列和索引类型。其中设置索引类型为本地二级索引。
secondary_indexes = [
SecondaryIndexMeta('index1', ['gid', 's'], ['bool', 'b', 'd'],index_type= SecondaryIndexType.LOCAL_INDEX),
]
# 调用client的create_table接口,如果没有抛出异常,则说明执行成功。
ots_client.create_table(table_meta, table_option, reserved_throughput, secondary_indexes)