UpdateExpression принимает значения Dynami c для функции обновления в таблице DynamoDB с использованием boto3 - PullRequest
1 голос
/ 06 августа 2020

Это вопрос из двух частей для первой части Обновление значения таблицы DynamoDB с помощью лямбда-функции, реализованной в boto3

теперь то, что я пытаюсь достичь, - это обновить значение Dynami c

def lambda_handler(event, context):
    param = event['queryStringParameters']['employeID']
    name = event['queryStringParameters']['employeName']
    dynamodb = boto3.resource('dynamodb', region_name="us-east-1")
    table = dynamodb.Table('api_demo_employe')
    column = [cloumn1,cloumn2......]
    for i in range(0,len(column):

       query = 'SET {} = :f'.format(column[i])

       response = table.update_item(
           Key = {
               'employeID' : param
           },
           ExpressionAttributeValues = {
    
              ':f': name
          },
           UpdateExpression = query
    
          )

Я получаю сообщение об ошибке

 "errorMessage": "An error occurred (ValidationException) when calling the UpdateItem operation: One or more parameter values were invalid: Cannot update attribute employeID. This attribute is part of the key",

Я знаю, что проблема в том, как я обрабатываю UpdateExpression

Может ли кто-нибудь помочь мне поставить с этим?

1 Ответ

3 голосов
/ 06 августа 2020

Вы пытаетесь обновить ключ элемента, но это не работает. Вам нужно будет удалить и заново создать элемент.

Для получения дополнительных сведений см. документацию Amazon DynamoDB :

Вы не можете использовать UpdateItem для обновления любые атрибуты первичного ключа. Вместо этого вам нужно будет удалить элемент, а затем использовать PutItem для создания нового элемента с новыми атрибутами.

...