全部产品
Search
文档中心

表格存储:更新单行数据

更新时间:Mar 30, 2026

本文介绍如何通过 Python SDK 更新表格存储数据表中的单行数据,您可以更新属性列的值、添加属性列、删除属性列的某个版本或整个属性列。

前提条件

初始化Tablestore Client

方法说明

def update_row(self, table_name, row, condition, return_type=None, transaction_id=None)

参数说明

名称

类型

说明

table_name(必选)

str

数据表名称。

row(必选)

Row

更新的行数据信息,包含以下参数。

  • primary_key(必选)List[Tuple]:主键信息,包括主键列名称和主键值。

    • 主键列数据类型包括 STRING、INTEGER 和 BINARY。

    • 写入数据的主键个数和类型必须与数据表的主键保持一致。

  • attribute_columns(必选)dict:更新的属性列信息和操作类型。

condition(必选)

Condition

更新条件,详情请参见条件更新

return_type(可选)

ReturnType

返回类型。

  • RT_NONE:默认值,不返回数据。

  • RT_PK:返回主键列。

transaction_id(可选)

str

局部事务ID,用于唯一标识局部事务,详情请参见局部事务

示例代码

以下示例代码用于修改 test_table 表中主键值为 row1 的行数据,将属性列 col1 的值修改为 changed_val1。

try:
    # 构造主键
    primary_key = [('id', 'row1')]
    # 构造更新的属性列数据
    attribute_columns = {
        'PUT': [('col1', 'changed_val1')]
    }

    # 构造更新行数据
    row = Row(primary_key, attribute_columns)

    # 调用 update_row 方法更新行数据
    # 更新行数据时必须指定更新条件 (RowExistenceExpectation.IGNORE,表示不做行存在性判断)
    consumed, return_row = client.update_row('test_table', row, Condition(RowExistenceExpectation.IGNORE))
    print('Read CU Cost: %s' % consumed.read)
    print('Write CU Cost: %s' % consumed.write)
except Exception as e:
    print("Update row failed with error: %s" % e)

您也可以参照示例代码进行以下行数据操作。

  • 添加一个属性列。

    attribute_columns = {
        'PUT': [('col2', 'val2')]
    }
  • 设置属性列数据版本号。

    attribute_columns = {
        'PUT': [('col2', 'val2', int(time.time() * 1000))]
    }
  • 删除属性列指定版本的数据。

    attribute_columns = {
        'DELETE': [('col2', None, 1747893563831)]
    }
  • 删除整个属性列数据。

    attribute_columns = {
        'DELETE_ALL': ['col2']
    }

相关文档