Python dynamoDB中的更新项

Python dynamoDB中的更新项,python,aws-lambda,amazon-dynamodb,validationexception,Python,Aws Lambda,Amazon Dynamodb,Validationexception,我正在尝试更新DynamoDB表中的项。我编写的代码正在更新该项,但当我添加一个标题为“source/target”的列时,它给出了一个“ValidationException”异常 用于更新的代码- dynamodb = boto3.resource('dynamodb') table = dynamodb.Table("test") response = table.update_item( Key={ 'id': "test_id

我正在尝试更新DynamoDB表中的项。我编写的代码正在更新该项,但当我添加一个标题为“source/target”的列时,它给出了一个“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):无效的UpdateExpression:语法错误;标记:\“/\”,靠近:\“源/目标”


如何解决此问题?

由于您在属性名称中使用了特殊字符,我认为您需要指定一个
表达式attributeNames

我不知道确切的语法,但应该是这样的:

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"
    )

由于您在属性名称中使用了一个特殊字符,我认为您需要指定一个
表达式attributeNames

我不知道确切的语法,但应该是这样的:

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"
    )

嗨,当你有如下特殊字符时,你必须使用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 #colName= :st, user_name= :usr",
        ExpressionAttributeValues={
            ':st' : event['source/target'],
            ':usr' : event['user_name']
                },
        ExpressionAttributeNames={
            '#colName' : 'source/target'
                },
        ReturnValues="UPDATED_NEW"
    )