In diesem Modul verwenden Sie die API-Funktion UpdateItem, um Attribute eines vorhandenen Elements in unserer Datenbank zu aktualisieren. In diesem Modul verwenden Sie die API-Funktion UpdateItem, um Attribute eines vorhandenen Elements in unserer Datenbank zu aktualisieren.

Veranschlagte Zeit für dieses Modul: 15 Minuten


Neben dem Schreiben und Lesen von Daten ist es wichtig, dass Sie die in einer Datenbank vorhandenen Informationen regelmäßig aktualisieren. Dazu verwenden Sie am besten einen einzigen Aufruf, anstatt ein Element zunächst abrufen und anschließend das komplette Element mit den vorgenommenen Änderungen erneut in die Datenbanktabelle zu schreiben. Mit DynamoDB können Sie vorhandene Elemente mit nur einem Aufruf der API-Funktion UpdateItem aktualisieren.

Denken Sie für dieses Beispiel daran, dass jedes Element über ein Attribut des Typs Formats verfügt. Hierbei handelt es sich um eine Zuordnung aller Buchformate, die in Ihrem Buchladen für einen bestimmten Buchtitel verfügbar sind. Im Laufe der Zeit muss diese Zuordnung für das jeweilige Buch aktualisiert werden, entweder weil Sie ein neues Format hinzugefügt haben oder weil Sie ein bestimmtes Format nicht mehr führen.


  • Aktualisieren eines Elements

    Konzentrieren Sie sich beim Aktualisieren eines Elements in Ihrem Anwendungscode auf die folgenden vier Komponenten:

    • Schlüssel: Mit diesem wird das zu aktualisierende Element identifiziert.
    • Ausdrucksattributnamen: Hierbei handelt es sich um Platzhalter für die zu aktualisierenden Attribute.
    • Ausdrucksattributwerte: Dies sind Platzhalter für die Werte, die für Ihre Attribute verwendet werden sollen.
    • Aktualisierungsausdruck: Hierbei werden die Ausdrucksattributnamen und -werte verwendet, um die gewünschten Aktualisierungen zu deklarieren.

    Stellen Sie sich vor, Sie haben kürzlich für den Titel Der Regenmacher von John Grisham das Format "Hörbuch" hinzugefügt und möchten die DynamoDB-Tabelle nun mit den entsprechenden Änderungen aktualisieren. Der Aufruf der API-Funktion UpdateItem würde wie folgt aussehen:

    # 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",
    )

    Der Aufruf der API-Funktion UpdateItem enthält die oben genannten vier Komponenten. Zunächst wird der Schlüssel des Elements angegeben, das bearbeitet werden soll. Dieser setzt sich aus dem Autor (John Grisham) und dem Titel (Der Regenmacher) zusammen.

    Anschließend geben Sie die Ausdrucksattributnamen an, die für Ihren Aktualisierungsausdruck verwendet werden sollen. Sie möchten das Attribut Formats bearbeiten, bei dem es sich um eine Zuordnung handelt. Das bedeutet, Sie müssen Ausdrucksattributnamen sowohl für das Attribut (Formats) als auch für den Schlüssel in Ihrer Karte (Hörbuch) definieren.

    Zum Schluss geben Sie den Aktualisierungsausdruck an, den Sie für den Aufruf der API-Funktion UpdateItem verwenden möchten. Für diesen Aktualisierungsausdruck werden sowohl die Ausdrucksattributnamen als auch die zuvor festgelegten Ausdrucksattributwerte verwendet. Mit dem Ausdruck SET #formats.#audiobook = :id weisen Sie DynamoDB an, den Schlüssel Audiobook des Attributs Formats zum angegebenen ID-Wert 8WE3KPTP zu ändern. 

    Im dritten Schritt geben Sie den Wert an, den Sie in den Ausdrucksattributwerten verwenden möchten. In Ihrer "Formats"-Karte entspricht der Wert für ein Format der Artikelnummer in Ihrem Inventarsystem. In diesem Beispiel lautet der Wert 8WE3KPTP.

    Mit dem Skript update_item.py wird der Aufruf der API-Funktion UpdateItem durchgeführt, der im Codeblock weiter oben im Modul dargestellt ist. Um die durch den Aufruf vorgenommenen Änderungen besser nachvollziehen zu können, wird das Element vom Skript zuerst abgerufen und ausgegeben, bevor der Aktualisierungsaufruf ausgeführt wird. Anschließend erfolgt der Aufruf der API-Funktion UpdateItem. Zum Schluss wird das Element vom Skript ein zweites Mal abgerufen und ausgegeben, um den Unterschied verdeutlichen.

    Führen Sie den folgenden Befehl aus, um den Vorgang in Echtzeit zu verfolgen.

    $ python update_item.py

    Sie sollten die folgende Ausgabe sehen:

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

    Wie Sie sehen, wurde dem Buchtitel Der Regenmacher im Zuge der Aktualisierung das Format Hörbuch hinzugefügt.


    In diesem Modul haben Sie gelernt, wie Sie ein vorhandenes Element mit der API-Funktion UpdateItem aktualisieren. Im nächsten Modul erfahren Sie, wie Sie die von Ihnen erstellten Ressourcen löschen, um zusätzliche Kosten zu vermeiden.