主键列自增

更新时间:
复制 MD 格式

使用 Python SDK 设置主键列自增,并在写入数据时获取系统生成的自增值。

前提条件

安装Tablestore Python SDK并初始化客户端。主键列自增需要 4.0.0 及以上版本,建议使用最新版本。

功能说明

自增主键列由 Tablestore 自动生成 64 位有符号整数值。生成的值在同一分区键内唯一且严格递增,但不保证连续。

设置主键列自增

创建数据表时,将一个非分区键的 INTEGER 类型主键列设置为 PK_AUTO_INCR。每张数据表最多设置一个自增主键列;已创建的数据表无法再设置。

以下示例创建包含分区键 id 和自增主键列 sequence_idexample_table

table_meta = TableMeta(
    "example_table",
    [
        ("id", "STRING"),
        ("sequence_id", "INTEGER", PK_AUTO_INCR),
    ],
)
table_options = TableOptions()
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))

client.create_table(table_meta, table_options, reserved_throughput)

写入数据并获取自增值

写入数据时,将自增主键列的值设置为 PK_AUTO_INCR。如需在后续查询或更新中使用系统生成的值,将 return_type 设置为 ReturnType.RT_PK

primary_key = [
    ("id", "device-001"),
    ("sequence_id", PK_AUTO_INCR),
]
attribute_columns = [("status", "online")]
row = Row(primary_key, attribute_columns)

_, return_row = client.put_row(
    "example_table",
    row,
    return_type=ReturnType.RT_PK,
)

print(return_row.primary_key)

参数说明

自增主键列配置

schema_of_primary_key[] 中用于配置自增主键列的元组包含以下元素。

名称

类型

说明

name(必选)

str

主键列名称。

type(必选)

str

主键列类型,必须设置为 INTEGER

option(必选)

PrimaryKeyOption

主键列选项,必须设置为 PK_AUTO_INCR。自增主键列不能作为分区键。

写入参数

put_row 方法包含以下与主键列自增相关的参数。

名称

类型

说明

table_name(必选)

str

数据表名称。

row(必选)

Row

待写入的行数据。自增主键列的值必须设置为 PK_AUTO_INCR

return_type(可选)

ReturnType

返回类型。设置为 RT_PK 时返回写入行的主键信息;不设置时不返回。

返回值

put_row 方法返回一个元组,包含以下信息。

字段

类型

说明

consumed

CapacityUnit

本次操作消耗的读写 CU。

return_row

Row

return_type 设置为 RT_PK 时,包含系统生成的完整主键;否则为 None