item pembaruan bersyarat dynamodb (klien)
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
Anda dapat memeriksa apakah atribut key sudah ada melewati ConditionExpression
parameter 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 ConditionExpression
dikembalikan True
. attribute_not_exists
adalah fungsi DynamoDb yang kembali True
jika atribut yang ditentukan tidak ada. Ada juga attribute_exists
fungsi 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