[英]Update item in dynamoDB
我正在嘗試更新 DynamoDB 表中的項目。 我編寫的代碼正在更新項目,但是當我添加標題為“源/目標”的列時,它給出了“ValidationException”異常。
用於更新的代碼 -
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table("test")
response = table.update_item(
Key={
'id': "test_id
},
UpdateExpression="set source/target= :st, user_name= :usr",
ExpressionAttributeValues={
':st' : event['source/target'],
':usr' : event['user_name']
},
ReturnValues="UPDATED_NEW"
)
我得到的錯誤是 -
調用 UpdateItem 操作時發生錯誤 (ValidationException): Invalid UpdateExpression: Syntax error; 令牌:\"/\",附近:\"源/目標\""
如何解決這個問題?
嗨,當您有任何特殊字符時,您必須使用 ExpressionAttributeNames,如下所示
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table("test")
response = table.update_item(
Key={
'id': "test_id
},
UpdateExpression="set #colName= :st, user_name= :usr",
ExpressionAttributeValues={
':st' : event['source/target'],
':usr' : event['user_name']
},
ExpressionAttributeNames={
'#colName' : 'source/target'
},
ReturnValues="UPDATED_NEW"
)
由於您在屬性名稱中使用了特殊字符,我認為您需要指定一個ExpressionAttributeNames
。
我不知道確切的語法,但它應該是這樣的:
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table("test")
response = table.update_item(
Key={
'id': "test_id"
},
UpdateExpression="set #src = :st, user_name = :usr",
ExpressionAttributeValues={
':st' : event['source/target'],
':usr' : event['user_name']
},
ExpressionAttributeNames={
'#src' : 'source/target'
},
ReturnValues="UPDATED_NEW"
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.