Dalam modul ini, Anda menggunakan API UpdateItem untuk memperbarui atribut item yang ada di database kami. Dalam modul ini, Anda menggunakan API UpdateItem untuk memperbarui atribut item yang ada di database kami.

Waktu untuk Menyelesaikan Modul: 15 Menit


Selain menulis dan membaca data, Anda sebaiknya rutin memperbarui data yang ada di database. Idealnya Anda dapat memperbarui data ini dalam satu panggilan alih-alih membaca item pertama lalu menulis lagi item lengkap dengan pembaruan dari kami. Dengan DynamoDB Anda dapat memperbarui item dengan menggunakan panggilan API UpdateItem.

Untuk contoh ini, ingat bahwa setiap item memiliki atribut Formats, yaitu peta semua format berbeda yang dimiliki toko buku Anda untuk judul tertentu. Seiring waktu, peta ini harus diperbarui untuk buku tertentu, baik karena Anda telah menambahkan format baru ataupun karena Anda berhenti membawa format.


  • Memperbarui satu item

    Bila memperbarui satu item dalam kode aplikasi Anda, fokuslah pada empat elemen:

    • Key yang mengidentifikasi item yang ingin diperbarui.
    • Expression attribute names, yaitu placeholder untuk atribut yang ingin diperbarui.
    • Expression attribute values, yaitu placeholder untuk nilai terhadap mana Anda ingin perbarui atributnya.
    • update expression, yang menggunakan nama atribut ekspresi dan nilai atribut ekspresi untuk menyatakan pembaruan yang Anda inginkan.

    Bayangkan Anda baru saja menambahkan format buku audio untuk The Rainmaker karya John Grisham, dan Anda ingin memperbarui tabel DynamoDB kami agar perubahan itu terlihat. Panggilan API UpdateItem akan terlihat seperti berikut.

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

    Panggilan API UpdateItem Anda memiliki tiap-tiap dari keempat elemen. Pertama, Key item yang ingin dioperasikan ditentukan dengan menyajikan Author sebagai John Grisham dan Title sebagai The Rainmaker.

    Kedua, Anda menentukan nama atribut ekspresi yang akan Anda gunakan dalam ekspresi pembaruan Anda. Anda memodifikasi atribut Formats, yang merupakan peta, jadi Anda harus mendefinisikan nama atribut ekspresi untuk atribut (Formats) dan kunci di dalam peta Anda (Buku Audio).

    Terakhir, Anda menulis ekspresi pembaruan yang ingin Anda terapkan dalam panggilan API UpdateItem Anda. Ekspresi pembaruan ini menggunakan nama atribut ekspresi dan nilai atribut ekspresi yang sudah ditentukan sebelumnya. Ekspresi SET #formats.#audiobook = :id Anda memberi tahu DynamoDB untuk mengatur kunci Audiobook pada atribut Formats ke nilai ID 8WE3KPTP yang diberikan. 

    Ketiga, Anda menyatakan nilai yang ingin Anda gunakan dalam nilai atribut ekspresi. Pada peta Formats, nilai untuk format adalah nomor item dalam sistem inventaris Anda. Dalam contoh ini, nilainya adalah 8WE3KPTP.

    Skrip update_item.py membuat panggilan API UpdateItem muncul di blok kode di awal modul tadi. Untuk menunjukkan perbedaan yang dibuat oleh panggilan, skrip terlebih dahulu mengambil dan mencetak item sebelum panggilan pembaruan dilakukan. Lalu skrip pun membuat panggilan API UpdateItem . Akhirnya, skrip mengambil dan mencetak item untuk kedua kalinya untuk menunjukkan perbedaannya.

    Anda dapat melihat hal ini terjadi dengan menjalankan perintah berikut.

    $ python update_item.py

    Anda akan melihat output berikut.

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

    Seperti Anda bisa lihat, The Rainmaker memiliki format Audiobook baru setelah pembaruan diterapkan.


    Pada modul ini, Anda belajar cara memperbarui item yang ada dengan API UpdateItem. Pada modul berikutnya, Anda belajar cara membersihkan sumber daya yang Anda buat untuk menghindari biaya tambahan.