Todos os produtos
Search
Central de documentação

Tablestore:Atualização de dados em lote

Última atualização: Jun 30, 2026

Insira, atualize e exclua linhas em várias tabelas do Tablestore em uma única solicitação com o SDK Python.

Observações de uso

  • Se alguma operação contiver um erro de parâmetro, o servidor gerará uma exceção e nenhuma operação será executada.

  • Uma única solicitação aceita até 200 linhas, com tamanho total máximo de 4 MB.

  • Ao chamar o método add várias vezes para a mesma tabela, somente a última chamada terá efeito.

Pré-requisitos

Inicializar o Tablestore Client

Método

def batch_write_row(self, request)

Parâmetros da solicitação

  • items (Obrigatório) List[TableInBatchWriteRowItem]: Lista de operações. Cada item refere-se a uma tabela específica e contém os seguintes parâmetros:

    Parâmetro

    Tipo

    Descrição

    table_name (Obrigatório)

    str

    Nome da tabela.

    row_items (Obrigatório)

    RowItem

    Operações de dados a executar na tabela: inserção, atualização e exclusão.

  • transaction_id (Opcional) str: ID de uma transação local. Transação Local.

Código de exemplo

Este exemplo insere uma linha na tabela test_table:

try:
    # Construct the request.
    request = BatchWriteRowRequest()

    put_row_items = []
    # Construct a PutRowItem.
    put_pk = [('id', 'row1')]
    put_columns = []
    put_row = Row(put_pk, put_columns)
    # You must specify a condition for the write operation. RowExistenceExpectation.IGNORE means no row existence check is performed.
    put_row_item = PutRowItem(put_row, Condition(RowExistenceExpectation.IGNORE))
    put_row_items.append(put_row_item)

    request.add(TableInBatchWriteRowItem('test_table', put_row_items))

    # Call the batch_write_row method to perform the batch operation.
    response = client.batch_write_row(request)

    # Process the response.
    # put row
    for table_name,put_rows in response.table_of_put.items():
        for item in put_rows:
            if not item.is_ok:
                print('TableName: %s. Failed to put row, Error message: %s' % (table_name, item.error_message))
    # update row
    for table_name, update_rows in response.table_of_update.items():
        for item in update_rows:
            if not item.is_ok:
                print('TableName: %s. Failed to update row, Error message: %s.' % (table_name, item.error_message))
    # delete row
    for table_name, delete_rows in response.table_of_delete.items():
        for item in delete_rows:
            if not item.is_ok:
                print('TableName: %s. Failed to delete row, Error message: %s.' % (table_name, item.error_message))
except Exception as e:
    print('Batch write row failed with error: %s' % e)

Os exemplos a seguir demonstram cada tipo de operação.

  • PutRowItem: Insere dados da linha.

    put_row_items = []
    # Construct a PutRowItem.
    put_pk = [('id', 'row1')]
    put_columns = []
    put_row = Row(put_pk, put_columns)
    # You must specify a condition for the write operation. RowExistenceExpectation.IGNORE means no row existence check is performed.
    put_row_item = PutRowItem(put_row, Condition(RowExistenceExpectation.IGNORE))
    put_row_items.append(put_row_item)
    
    request.add(TableInBatchWriteRowItem('test_table', put_row_items))

    Adicione colunas de atributo durante uma operação de inserção:

    # Attribute columns
    put_columns = [('col1','val1')]
    # Attribute column with a custom timestamp
    put_columns = [('col1','val1', int(time.time() * 1000))]
  • UpdateRowItem: Modifica valores de colunas de atributo, adiciona colunas, exclui uma versão específica da coluna ou remove a coluna inteira.

    update_row_items = []
    # Construct an UpdateRowItem.
    update_pk = [('id', 'row1')]
    update_columns = {
        'PUT': [('col1', 'changed_val1')]
    }
    update_row = Row(update_pk, update_columns)
    # You must specify a condition for the update operation. RowExistenceExpectation.IGNORE means no row existence check is performed.
    update_row_item = UpdateRowItem(update_row, Condition(RowExistenceExpectation.IGNORE))
    update_row_items.append(update_row_item)
    
    request.add(TableInBatchWriteRowItem('test_table', update_row_items))

    Adicione ou exclua colunas de atributo durante uma operação de atualização:

    # Add attribute columns.
    update_columns = {
        'PUT': [('col3', 'val3')]
    }
    # Add an attribute column with a custom timestamp.
    update_columns = {
        'PUT': [('col4', 'val4', int(time.time() * 1000))]
    }
    # Delete attribute columns.
    update_columns = {
        'DELETE_ALL': ['col2']
    }
  • DeleteRowItem: Exclui dados da linha.

    delete_row_items = []
    # Construct a DeleteRowItem.
    delete_pk = [('id', 'row1')]
    delete_row = Row(delete_pk, [])
    # You must specify a condition for the delete operation. RowExistenceExpectation.IGNORE means no row existence check is performed.
    delete_row_item = DeleteRowItem(delete_row, Condition(RowExistenceExpectation.IGNORE))
    delete_row_items.append(delete_row_item)
    
    request.add(TableInBatchWriteRowItem('test_table', delete_row_items))
  • Exemplo de execução de múltiplas operações em uma única tabela

    request = BatchWriteRowRequest()
    table_batch_items = TableInBatchWriteRowItem('<TABLE_NAME>', put_row_items)
    table_batch_items.row_items += delete_row_items
    request.add(table_batch_items)

Documentos relacionados