我需要使用boto3更新我的dynamodb表中的timestamp属性,但是属性名称" timestamp"是保留字,因此它在SET命令上抛出错误。
table.update_item(
Key={
'id': item_id
},
UpdateExpression='SET timestamp = :val1', # this is the line giving the problem
ExpressionAttributeValues={
":val1": new_timestamp
}
)
" errorMessage":"调用UpdateItem操作时发生错误(ValidationException):无效的UpdateExpression:属性名称是保留关键字;保留关键字:timestamp",
答案 0 :(得分:23)
您可以使用expression attribute names解决此问题(类似于您已使用的ExpressionAttributeValues)。
table.update_item(
Key={
'id': item_id
},
UpdateExpression='SET #ts = :val1',
ExpressionAttributeValues={
":val1": new_timestamp
},
ExpressionAttributeNames={
"#ts": "timestamp"
}
)
在此处阅读所有相关信息:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeNames.html