主键列自增

本文介绍如何通过 Python SDK 为数据表设置主键列自增,以及如何为自增列写入数据并获取生成的自增值。

注意事项

  • 表格存储 Python SDK 从 4.0.0 版本开始支持主键列自增。

  • 自增列生成的自增值在分区键级别唯一且严格递增,但不保证连续。

前提条件

初始化Tablestore Client

设置主键列自增

您可以在创建数据表时将非分区主键列设置为自增列,对于已创建的数据表,无法设置自增列。

说明

只有整型的非分区主键列才能设置为自增列,一个数据表最多只能设置一个自增列,自增列生成的值为 64 位有符号长整型。

示例代码

以下示例代码创建了一个数据表 test_table,该表的主键包括分区键 id 和自增列 incr。

schema_of_primary_key = [('id', 'STRING'), ('incr', 'INTEGER', PK_AUTO_INCR)]
table_meta = TableMeta('test_table', schema_of_primary_key)
table_options = TableOptions()
reserved_throughput = ReservedThroughput(CapacityUnit())
try:
    client.create_table(table_meta, table_options, reserved_throughput)
    print("Create table succeeded.")
except Exception as e:
    print("Create table failed. %s" % e)

写入数据

为自增列写入数据时,只需要将自增列的值设置为占位符。如果要获取生成的自增值用于数据查询和更新,还需要设置 put_row 的返回类型为 RT_PK。

示例代码

以下示例代码在 test_table 表中写入一行数据,同时获取并打印写入行数据的主键信息。

# 构造主键
primary_key = [('id', 'row1'), ('incr', PK_AUTO_INCR)]

# 构造写入行数据
attribute_columns = [('col1', 'val1')]
row = Row(primary_key, attribute_columns)

try:
    # 调用 putRow 方法写入行数据,并设置返回类型为 RT_PK(返回写入行数据的主键信息)
    consumed, return_row = client.put_row('test_table', row, return_type=ReturnType.RT_PK)

    # 读写 CU 消耗
    print('Read CU Cost: %s' % consumed.read)
    print('Write CU Cost: %s' % consumed.write)

    # 获取返回的主键信息并打印,如果不设置返回类型为 RT_PK,默认不返回主键信息
    if return_row is not None:
        print('Primary key: %s' % return_row.primary_key)
except Exception as e:
    print("Write failed. %s" % e)