全部產品
Search
文件中心

Tablestore:更新單行資料

更新時間:Aug 05, 2026

使用 Python SDK 新增、修改或刪除單行中的屬性列,並按需指定資料版本號碼。

前提條件

安裝Tablestore Python SDK並初始化用戶端。

功能說明

調用 update_row 方法按主鍵更新單行資料。該方法只修改指定的屬性列,不影響行中的其他屬性列。

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

以下樣本將 example_table 中主鍵為 ("device", 1) 的行的 status 屬性列更新為 offline

primary_key = [("partition", "device"), ("id", 1)]
attribute_columns = {"PUT": [("status", "offline")]}
row = Row(primary_key, attribute_columns)
condition = Condition(RowExistenceExpectation.EXPECT_EXIST)

consumed, return_row = client.update_row(
    "example_table",
    row,
    condition,
)
print("Write CU: %s" % consumed.write)

參數說明

update_row 方法包含以下參數。

名稱

類型

說明

table_name(必選)

str

資料表名稱。

row(必選)

Row

待更新的主鍵和屬性列變更。

condition(必選)

Condition

更新條件。有關配置方法,請參見條件更新。不需要判斷行或列值時,設定為 Condition(RowExistenceExpectation.IGNORE)

return_type(可選)

ReturnType

傳回型別。RT_NONE(預設值)表示不返回資料;RT_PK 表示返回主鍵列。

transaction_id(可選)

str

局部事務 ID。僅在局部事務內更新資料時設定。有關使用方法,請參見局部事務

行資料

row 的類型為 Row,包含以下參數。

名稱

類型

說明

primary_key(必選)

List[Tuple]

主鍵資訊。必須包含全部主鍵列,且主鍵列的名稱、順序、數量和類型與資料表的主鍵結構一致。

attribute_columns(必選)

Dict[str, List]

屬性列變更。PUT 新增或修改屬性列;DELETE 刪除屬性列的指定版本;DELETE_ALL 刪除屬性列的全部版本;INCREMENT 對整型屬性列執行原子計數。

傳回值

update_row 返回以下值。

欄位

類型

說明

consumed

CapacityUnit

本次操作消耗的讀寫 CU。

return_row

Row

返回的行資料。return_typeRT_PK 時返回主鍵列,否則為 None

情境樣本

寫入指定版本號碼的屬性列

PUT 操作的屬性列元組中指定第三個元素,可將資料版本號碼設定為指定的毫秒時間戳記。

timestamp = int(time.time() * 1000)
primary_key = [("partition", "device"), ("id", 1)]
attribute_columns = {
    "PUT": [("status", "online", timestamp)],
}
row = Row(primary_key, attribute_columns)

client.update_row(
    "example_table",
    row,
    Condition(RowExistenceExpectation.EXPECT_EXIST),
)

刪除屬性列的指定版本

以下樣本刪除 status 屬性列中版本號碼為 timestamp 的資料,保留該列的其他版本。

primary_key = [("partition", "device"), ("id", 1)]
attribute_columns = {
    "DELETE": [("status", None, timestamp)],
}
row = Row(primary_key, attribute_columns)

client.update_row(
    "example_table",
    row,
    Condition(RowExistenceExpectation.EXPECT_EXIST),
)

刪除整個屬性列

以下樣本刪除 status 屬性列的全部版本。

primary_key = [("partition", "device"), ("id", 1)]
attribute_columns = {"DELETE_ALL": ["status"]}
row = Row(primary_key, attribute_columns)

client.update_row(
    "example_table",
    row,
    Condition(RowExistenceExpectation.EXPECT_EXIST),
)