Обновление значения таблицы DynamoDB с реализованной лямбда-функцией boto3 - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь выполнить операцию обновления, используя свой метод API для обновления содержимого таблицы.

У меня установлен следующий лямбда-код:

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')
    
    response = table.update_item(
        Key = {
            'employeID' : param
        }
        
        )

Мне нужно вычислить как я могу установить UpdateExpression, ConditionExpression, ExpressionAttributeValues ​​, используя мою переменную обновления.

Может ли кто-нибудь помочь мне из этого?

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Это будет примерно так:

response = table.update_item(TableName=table, 
                             ReturnValues='UPDATED_NEW',
                             Key={'employeID': {'S': param}},
                             ExpressionAttributeValues={':f': {'S': update['some_param']},
                                                     ':limit': {'N': '500'}},
                             UpdateExpression='SET some_field = :f',
                             ConditionExpression='some_other_field > :limit'
                            )

Конечно, это всего лишь пример - ваши конкретные c выражения будут зависеть от того, что вы пытаетесь сделать. И я догадываюсь о ваших типах данных. 'S' предназначен для строки, но есть и другие варианты для других типов данных. Вы определяете переменные подстановки в ExpressionAttributeValues, а затем ссылаетесь на них в UpdateExpression и ConditionExpression по мере необходимости.

Полная информация обо всех параметрах доступна в https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb.html#DynamoDB .Client.update_item Вы захотите просмотреть эти варианты и посмотреть на там хорошие примеры того, как делать разные вещи.

0 голосов
/ 05 августа 2020

Я попробовал это с помощью ответа @Shawn

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

И это сработало.

...