Boto3 list_append значение, чтобы перезаписать нулевое значение в списке - PullRequest
0 голосов
/ 09 марта 2019

Я пишу небольшую лямбда-функцию для обновления элемента game в моем DynamoDB.Мой элемент game имеет атрибут participants, представляющий собой список, состоящий из participant_id каждого участника игры.Если в игре еще нет участников (т.е. раунд позже в скобках), список будет содержать 2 null значений:

Empty participant list

Я хотел бы перезаписывать значения null строкой каждый раз, когда добавляю нового участника.В настоящее время я могу добавить новую строку в список, но значения null остаются:

After adding a participant

Как я могупереписать одно из 2 пустых значений строкой, используя boto3? (то есть, где это выглядит как ["participantOneId", Null] после добавления одного участника и ["participantOneId", "participantTwoId"] после добавления обоих участников) Это моя текущая реализация:

import boto3
import json

dynamodb = boto3.resource("dynamodb")
gamesTable = dynamodb.Table('games')

def lambda_handler(event, context):
  # get "next_game_id" and "winner_id" from the event body
  updated_next_game = gamesTable.update_item(
      Key={'id': next_game_id },
      UpdateExpression="SET participants = list_append(participants, :i)",
      ExpressionAttributeValues={
        ':i': [winner_id],
      },
      ReturnValues="ALL_NEW"
  )

1 Ответ

1 голос
/ 11 марта 2019

Если вам не нужно ничего добавлять в список, вы не хотите использовать list_append. Примерно так должно работать нормально:

UpdateExpression="SET participants[0] = <whatever>"

и / или

UpdateExpression="SET participants[1] = <whatever>"

(Если вы заранее не знаете, какой из двух элементов вам нужно установить, вы всегда можете использовать if_not_exists.)

...