Получение ошибок при попытке обновления столбца в DynamoDb с помощью клиента Python - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть таблица DynamoDB с именем ключа в качестве идентификатора и полем String с именем state.Я просто хочу обновить значение состояния, используя update_item DynamoDb Python client.

DDB_CLIENT.update_item(
            Key={
                    'id' : {'S': id}
                },
            TableName='TrackingState',
            UpdateExpression="set state = :r",
            ExpressionAttributeValues={
                ':r': '"state": {"S": "IN_PROGRESS"}'
            }
        )

Я получаю сообщение об ошибке: Invalid type for parameter ExpressionAttributeValues type: <class 'str'>, valid types: <class 'dict'>

Если я пытаюсь использовать expressionAttributeValues ​​как:

':r' : {"state": {"S": "IN_PROGRESS"}} I get the error: Unknown parameter in ExpressionAttributeValues.:r: "state", must be one of: S, N, B, SS, NS, BS, M, L, NULL, BOOL

Если я пытаюсь

':r' : {"S": "QUEUED"}
Invalid UpdateExpression: Attribute name is a reserved keyword; reserved keyword: state

Как правильно обновлять запись в таблице DynamoDb

1 Ответ

0 голосов
/ 08 февраля 2019

Если я попытаюсь

': r': {"S": "QUEUED"} Неверное выражение UpdateExpression: имя атрибута является зарезервированным ключевым словом;зарезервированное ключевое слово: состояние

Правильно, ключевое слово state не может использоваться в выражении, поэтому диктант ExpressionAttributeNames разрешает использовать его.

DDB_CLIENT.update_item(
            Key={
                    'id' : {'S': id}
                },
            TableName='TrackingState',
            UpdateExpression="set #s = :r",
            ExpressionAttributeNames={
                '#s': "state"
            },
            ExpressionAttributeValues={
                ':r': {"S": "QUEUED"}
            }
        )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...