item pembaruan bersyarat dynamodb (klien)

Dec 09 2020

Saya mengacu pada contoh item pembaruan ini: https://stackoverflow.com/a/62030403/13967222.


    for key, val in body.items():
        update_expression.append(f" {key} = :{key},")
        update_values[f":{key}"] = val

    return "".join(update_expression)[:-1], update_values

Saya mencoba untuk mencapai hal yang sama tetapi menggunakan klien dynamodb.

Apakah ada cara saya menambahkan centang jika nilai tersedia menggunakan klien dynamodb?

Jawaban

1 FireNero Dec 09 2020 at 17:58

Anda dapat memeriksa apakah atribut key sudah ada melewati ConditionExpressionparameter dalam permintaan seperti itu (berdasarkan respon dalam jawaban yang Anda rujuk):

table.update_item(
        Key={'uuid':str(uuid)},
        UpdateExpression=a,
        ExpressionAttributeValues=dict(v),
        ConditionExpression="attribute_not_exists(uuid)"
        )

Tulisan Anda akan dieksekusi hanya jika ConditionExpressiondikembalikan True. attribute_not_existsadalah fungsi DynamoDb yang kembali Truejika atribut yang ditentukan tidak ada. Ada juga attribute_existsfungsi untuk mencapai hasil sebaliknya. Lebih lanjut tentang fungsi kondisi DDB dalam dokumentasi resmi

Selain itu, Anda dapat memeriksa contoh Python menulis bersyarat dalam dokumen di sini