Use o Tablestore SDK for Python para adicionar, modifique ou exclua colunas de atributo em uma linha e, opcionalmente, especifique versões de dados.
Pré-requisitos
Instale o Tablestore SDK for Python e inicialize um cliente.
Descrição da função
Chame update_row para atualize uma linha pela chave primária. Esse método altera apenas as colunas de atributo especificadas e mantém as demais inalteradas.
def update_row(
self,
table_name,
row,
condition,
return_type=None,
transaction_id=None,
)
O exemplo a seguir altera a coluna de atributo status para offline na linha com chave primária ("device", 1) da tabela example_table.
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)
Parâmetros
O método update_row tem os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
table_name (obrigatório) |
|
Nome da tabela. |
|
row (obrigatório) |
|
Chave primária e alterações nas colunas de atributo. |
|
condition (obrigatório) |
|
Condição de atualização. Para mais informações, consulte Use conditional updates. Para ignorar verificações de valores de linhas e colunas, especifique |
|
return_type (opcional) |
|
Tipo de retorno. |
|
transaction_id (opcional) |
|
ID da transação local. Especifique este parâmetro apenas para atualizações em uma transação local. Para mais informações, consulte Use local transactions. |
Dados da linha
O parâmetro row é do tipo Row e contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
primary_key (obrigatório) |
|
Chave primária. Especifique todas as colunas da chave primária. Os nomes, a ordem, a quantidade e os tipos devem corresponder ao esquema de chave primária da tabela. |
|
attribute_columns (obrigatório) |
|
Alterações nas colunas de atributo. |
Resposta
update_row retorna os seguintes valores.
|
Campo |
Tipo |
Descrição |
|
consumed |
|
CUs de leitura e escrita consumidas pela operação. |
|
return_row |
|
Linha retornada. Se |
Exemplos
Gravar uma coluna de atributo com versão especificada
Em uma operação PUT, o terceiro elemento da tupla da coluna de atributo define a versão dos dados como um timestamp em milissegundos.
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),
)
Excluir uma versão específica de uma coluna de atributo
O exemplo a seguir exclua a versão identificada por timestamp da coluna de atributo status e preserva as demais versões.
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),
)
Excluir uma coluna de atributo inteira
O exemplo a seguir exclua todas as versões da coluna de atributo 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),
)