Reputation: 737
in the boto3 documentation updating an item is described by this example:
table.update_item(
Key={
'username': 'janedoe',
'last_name': 'Doe'
},
UpdateExpression='SET age = :val1',
ExpressionAttributeValues={
':val1': 26
}
)
But what am i supposed to do, if i want to update several values of the item. I couldn't find any information on this. Can anybody help? Thank you!
EDIT:
Ok, it seems to work like this, can anybody confirm wether this is the right way. Just to be sure i'm not doing anything totally wrong here.
table.update_item(
Key={
'id': item['id']
},
UpdateExpression='SET value1 = :val1, value2 = :val2',
ExpressionAttributeValues={
':val1': someValue1,
':val2': someValue2
}
)
Thanks!
Upvotes: 36
Views: 24026
Reputation: 2092
For others finding this, theres a library you can use to help with the weird boto3 stuff like ExpressionAttributeValues
. This way you can make normal developer/human calls.
https://github.com/rayepps/dynamof
db(update(
table_name='users',
key={ 'id': item['id'] },
attributes={
'age': 26,
'name': 'Carl'
}))
disclaimer: I wrote it
Upvotes: -1
Reputation: 2943
Yes, that's the way to do. Even many actions can be done in single expression as shown here. For ex: multiple 'PUT' and 'DELETE' in single expression.
Upvotes: 25