簡體   English   中英

更新 dynamoDB 中的項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM