Neste módulo, você usará a API UpdateItem para atualizar atributos de um item existente em nosso banco de dados. Neste módulo, você usará a API UpdateItem para atualizar atributos de um item existente em nosso banco de dados.

Tempo de conclusão do módulo: 15 minutos


Além de gravar e ler dados, você deseja atualizar regularmente os dados existentes em um banco de dados. Seria melhor se você pudesse atualizar esses dados em uma única chamada, em vez de primeiro ler um item e depois gravar de volta o item completo com as nossas atualizações fornecidas. O DynamoDB permite atualizar itens no local usando a chamada de API UpdateItem.

Neste exemplo, lembre-se de que cada item tem um atributo Formats, que é um mapa de todos os diferentes formatos que a sua livraria possui para um determinado título. Com o tempo, esse mapa precisa ser atualizado para um livro específico, seja porque você adicionou um novo formato ou porque parou de usar um formato.


  • Atualizar um item

    Ao atualizar um item no código do aplicativo, concentre-se em quatro elementos:

    Imagine que você adicionou recentemente um formato de audiolivro para o The Rainmaker de John Grisham e deseja atualizar nossa tabela do DynamoDB para refletir essa alteração. A chamada de API UpdateItem teria a seguinte aparência.

    # The UpdateItem API allows you to update a particular item as identified by its key.
    resp = table.update_item(
        Key={"Author": "John Grisham", "Title": "The Rainmaker"},
        # Expression attribute names specify placeholders for attribute names to use in your update expressions.
        ExpressionAttributeNames={
            "#formats": "Formats",
            "#audiobook": "Audiobook",
        },
        # Expression attribute values specify placeholders for attribute values to use in your update expressions.
        ExpressionAttributeValues={
            ":id": "8WE3KPTP",
        },
        # UpdateExpression declares the updates you want to perform on your item.
        # For more details about update expressions, see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html
        UpdateExpression="SET #formats.#audiobook = :id",
    )

    Sua chamada de API UpdateItem tem cada um dos quatro elementos. Primeiro, ela especifica a Chave do item na qual deseja operar, fornecendo Author como John Grisham e Title como The Rainmaker.

    Em segundo lugar, você especifica os nomes de atributo de expressão que usará na expressão de atualização. Você está modificando o atributo Formats, que é um mapa e, então, precisa definir nomes de atributo de expressão para o atributo (Formats) e a chave no seu mapa (Audiobook).

    Por fim, você grava a expressão de atualização que deseja aplicar na sua chamada de API UpdateItem. Essa expressão de atualização usa os nomes e os valores de atributo de expressão conforme definido anteriormente. Sua expressão de SET #formats.#audiobook = :id instrui o DynamoDB a definir a chave Audiobook do atributo Formats como o valor de ID fornecido de 8WE3KPTP

    Em terceiro lugar, você indica o valor que deseja usar nos valores de atributo de expressão. No mapa Formats, o valor de um formato é o número do item no sistema de inventário. Neste exemplo, o valor é 8WE3KPTP.

    O script update_item.py faz a chamada de API UpdateItem mostrada no bloco de código anteriormente no módulo. Para demonstrar a diferença feita pela chamada, o script primeiro recupera e imprime o item antes que a chamada de atualização seja feita. Em seguida, ele faz a chamada de API UpdateItem. Por fim, o script recupera e imprime o item uma segunda vez para mostrar a diferença.

    Você pode ver isso em ação executando o seguinte comando.

    $ python update_item.py

    A seguinte saída será exibida.

    Item before update:
    {'Title': 'The Rainmaker', 'Formats': {'Hardcover': 'J4SUKVGU', 'Paperback': 'D7YF4FCX'}, 'Author': 'John Grisham', 'Category': 'Suspense'}
    Item after update:
    {'Title': 'The Rainmaker', 'Formats': {'Audiobook': '8WE3KPTP', 'Hardcover': 'J4SUKVGU', 'Paperback': 'D7YF4FCX'}, 'Author': 'John Grisham', 'Category': 'Suspense'}

    Como você pode ver, The Rainmaker tem um novo formato de Audiobook após a aplicação da atualização.


    Neste módulo, você aprendeu a atualizar um item existente com a API UpdateItem. No próximo módulo, você aprenderá a limpar os recursos criados para evitar cobranças adicionais.