DynamoDB обновляет поле, имеющее JSON в качестве значения, с целой / числовой строкой в ​​качестве ключей в Python - PullRequest
0 голосов
/ 20 ноября 2018

Я храню элемент со следующей структурой в моей таблице DynamodB.

Item = {"response": [
    {
        "answers": {
            "11-18": 0,
            "19-24": 0
        }
    }
]}

Я хочу обновлять ответ [0] .answers.11-18 постепенно.Моя команда была:

table_resource.update_item(
        Key={
            'id': 123
        },
        UpdateExpression="set response[0].answers.11-18 = response[0].answers.11-18 + :inc",
        ExpressionAttributeValues={":inc": 1},
        ReturnValues="UPDATED_NEW",
)

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

An error occurred (ValidationException) when calling the UpdateItem operation: Invalid UpdateExpression: Syntax error; token: "11", near: ".11-"

1 Ответ

0 голосов
/ 22 ноября 2018

Ваш вложенный атрибут 11-18 начинается с числа, поэтому вы не можете использовать его в выражении обновления.

Если имя атрибута начинается с цифры или содержит пробел, специальный символ или зарезервированное слово, то вы должны использовать имя атрибута выражения, чтобы заменить имя этого атрибута в выражении.

Вы можете обойти это, используя заполнитель ExpressionAttributeNames .

...