Developer Center/Getting Started/Hands-on/...(Centro Sviluppatori/Introduzione/Esercitazione pratica/...

Nozioni di base su AWS

Creazione e gestione di un database non relazionale

con Amazon DynamoDB

Modulo 4: Aggiornamento di elementi

In questo modulo, utilizzerai l'API UpdateItem per aggiornare gli attributi di un elemento esistente nel nostro database.

Panoramica

In questo modulo, utilizzerai l'API UpdateItem per aggiornare gli attributi di un elemento esistente nel nostro database.

Casi d'uso di applicazioni

Oltre a scrivere e leggere i dati, hai la necessità di aggiornare con regolarità i dati esistenti in un database. L'ideale è aggiornare questi dati in una singola chiamata, anziché dovere prima leggere un elemento per poi riscrivere l'intero elemento con gli aggiornamenti del caso. DynamoDB ti consente di aggiornare gli elementi esistenti utilizzando la chiamata API UpdateItem.

Per il nostro esempio, ricorda che ogni elemento dispone di un attributo Formats (Formati), che è una mappa di tutti i diversi formati che la tua libreria detiene per un certo titolo. Nel corso del tempo, questa mappa deve essere aggiornata per un certo libro, perché hai aggiunto un nuovo formato o perché non supporti più un determinato formato.

 Tempo richiesto per il completamento

15 minuti

Implementazione

  • Aggiornamento di un elemento

    Quando aggiorni un elemento nel codice della tua applicazione, devi tenere in considerazione quattro elementi:

    • La chiave, che identifica l'elemento che vuoi aggiornare.
    • I nomi degli attributi dell'espressione, ossia dei segnaposti degli attributi che intendi aggiornare.
    • I valori degli attributi dell'espressione, ossia dei segnaposti dei valori con i quali intendi aggiornare gli attributi.
    • L’espressione di aggiornamento, che utilizza i nomi e i valori degli attributi dell’espressione per dichiarare gli aggiornamenti desiderati. Supponiamo che tu abbia appena aggiunto l’audiolibro L’uomo della pioggia di John Grisham e che desideri aggiornare la tabella DynamoDB per riflettere tale modifica. La chiamata API UpdateItem avrà il seguente aspetto.
    # 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",
    )

    La chiamata API UpdateItem contiene tutti e quattro gli elementi. Innanzitutto, specifica la chiave dell'elemento su cui intendi operare, fornendo come Autore John Grisham e come Titolo L'uomo della pioggia.

    In secondo luogo, specifica i nomi degli attributi dell'espressione che utilizzerai nell'espressione dell'aggiornamento. Stai modificando l'attributo Formati, che è una mappa, pertanto dovrai definire i nomi degli attributi dell'espressione sia per l'attributo (Formati) sia per la chiave all'interno della mappa (Audiobook).

    Infine, scrivi l'espressione di aggiornamento che desideri applicare nella chiamata API UpdateItem. Questa espressione di aggiornamento utilizza sia i nomi degli attributi dell'espressione sia i valori degli attributi dell'espressione come specificato in precedenza. La tua espressione SET #formats.#audiobook = :id comunica a DynamoDB di impostare la chiave Audiolibro dell'attributo Formati con il valore ID assegnato di 8WE3KPTP

    In terzo luogo, dichiari il valore che vuoi utilizzare nei valori degli attributi dell'espressione. Nella mappa Formati, il valore di un formato è il numero dell'elemento all'interno del tuo sistema di inventario. In questo esempio, il valore è 8WE3KPTP.

    Lo script update_item.py effettua la chiamata API UpdateItem mostrata nel blocco di codice in una fase precedente del modulo. Per dimostrare le modifiche apportate dalla chiamata, lo script in primo luogo recupera e stampa l'elemento prima che sia stata effettuata la chiamata di aggiornamento. Successivamente, effettua la chiamata API UpdateItem. Infine, lo script recupera e stampa l'elemento una seconda volta per mostrare la differenza.

    Prima di poter eseguire lo script devi aggiungere qualche riga. Apri update_item.py con Cloud9, quindi incolla le seguenti 3 righe nella parte superiore dello script:

    import boto3
    dynamodb = boto3.resource('dynamodb', region_name='us-east-1')
    table = dynamodb.Table('Books')

    Quindi esegui il comando riportato di seguito:

    $ python update_item.py
    

    Dovresti visualizzare l'output seguente.

    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'}

    Come puoi osservare, dopo l'applicazione dell'aggiornamento per L'uomo della pioggia è disponibile il nuovo formato Audiobook.

    In questo modulo hai imparato come aggiornare un elemento esistente con l'API UpdateItemNel modulo successivo, scoprirai come effettuare la pulizia delle risorse che hai creato al fine di evitare addebiti aggiuntivi.

Questo modulo è stato utile?

Grazie
Facci sapere cosa ti è piaciuto.
Chiudi
Spiacenti di non esserti stati d'aiuto
C'è qualcosa di obsoleto, ambiguo o approssimativo? Aiutaci a migliorare questo tutorial con il tuo feedback.
Chiudi

Pulizia e fasi successive