使用 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(必選) |
|
資料表名稱。 |
|
row(必選) |
|
待更新的主鍵和屬性列變更。 |
|
condition(必選) |
|
更新條件。有關配置方法,請參見條件更新。不需要判斷行或列值時,設定為 |
|
return_type(可選) |
|
傳回型別。 |
|
transaction_id(可選) |
|
局部事務 ID。僅在局部事務內更新資料時設定。有關使用方法,請參見局部事務。 |
行資料
row 的類型為 Row,包含以下參數。
|
名稱 |
類型 |
說明 |
|
primary_key(必選) |
|
主鍵資訊。必須包含全部主鍵列,且主鍵列的名稱、順序、數量和類型與資料表的主鍵結構一致。 |
|
attribute_columns(必選) |
|
屬性列變更。 |
傳回值
update_row 返回以下值。
|
欄位 |
類型 |
說明 |
|
consumed |
|
本次操作消耗的讀寫 CU。 |
|
return_row |
|
返回的行資料。 |
情境樣本
寫入指定版本號碼的屬性列
在 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),
)