DynamoDB update_item问题:“调用UpdateItem操作时:条件请求失败”(Python)

时间:2019-06-15 12:53:12

标签: python-3.x amazon-web-services amazon-dynamodb boto3

我正在尝试基于2件事更新Dynamo DB数据库中的现有项目:1)提取日期和2)项URL。但是,我收到“条件请求失败”错误。

我已经实现了以下代码;但是,该错误继续出现。

如果有帮助,我的主分区键是“ itemUuid(字符串)”(不使用主排序键)。日期格式为“ m / d / yyyy”。

    if response['ResponseMetadata']['HTTPStatusCode'] == 200 :
        table_page1Update.update_item(Key={'itemUuid' : str(item['itemUuid'])},
                    UpdateExpression = 'SET readSuccess = :readSuccess',
                    ConditionExpression = 'extractionDate = :extractionDate AND itemUrl = :itemUrl',
                    ExpressionAttributeValues={
                        ':readSuccess' : 'OK',
                        ':itemUrl' : 'http://url_of_item_in_db_field.com',
                        ':extractionDate' : config.DATETIMEFOREXPORT
                    }
        )

我希望与日期和itemUrl匹配的项目的readSuccess字段填充为“ OK”。

1 个答案:

答案 0 :(得分:0)

发电机可能用错误的格式解释了,如果您尝试了以下操作(我将所有内容都设置为包括日期的字符串类型,因为日期在发电机中存储为字符串):

    if response['ResponseMetadata']['HTTPStatusCode'] == 200 :
        table_page1Update.update_item(Key={'itemUuid' : {'S' : str(item['itemUuid'])}},
                    UpdateExpression = 'SET readSuccess = :readSuccess',
                    ConditionExpression = 'extractionDate = :extractionDate AND itemUrl = :itemUrl',
                    ExpressionAttributeValues={
                        ':readSuccess' : { 'S':'OK' },
                        ':itemUrl' : { 'S':'http://url_of_item_in_db_field.com' },
                        ':extractionDate' : { 'S':config.DATETIMEFOREXPORT }
                    }
        )