簡體   English   中英

更新DynamoDB表,然后獲取新值

[英]Update DynamoDB Table then get new value

我是Python的新手。 我在Lambda函數中的Python中有一些代碼可以更新DynamoDB表(ebsDaysToExpire)中的值。 這樣可行。 當我想獲取新的更新值時會卡住,以便稍后可以在腳本中將其作為send_mail函數的一部分傳遞。

我已經嘗試在response = table.get_item語句中添加,但是我無法使其正常工作。

            if response['Count'] == 0: #volume not being tracked in table
                try:
                    response = table.put_item(
                        Item={
                            'volID': vid,
                            'ebsDaysToExpire': 7,
                            'snapshotStatus': 'incomplete',
                            'snapshotDate': 'incomplete',
                            'lifecycleStatus': 'start_7',
                            'snapshotID': 'incomplete',
                            'snapshotDaysToExpire': '30'
                        },
                        ConditionExpression='attribute_not_exists(volID)'
                        )
                except ClientError as e:
                    print(e.response['Error']['Message'])
            else:
                try:
                    response = table.update_item(
                        Key={
                            'volID': vid
                        },
                        UpdateExpression='set ebsDaysToExpire = ebsDaysToExpire + :val',
                        ExpressionAttributeValues={
                            ':val': decimal.Decimal(-1)
                        },
                        ReturnValues='UPDATED_NEW'
                    )
                except ClientError as e:
                    print(e.response['Error']['Message'])

這就是我的代碼現在的樣子,並且在'table_put.item'更新表之后,該值從DynamoDB表返回了新值(返回的值)。 這被傳遞為“ xdays”。 感謝ohlr的協助。

            if response['Count'] == 0: #volume not being tracked in table
                try:
                    response = table.put_item(
                        Item={
                            'volID': vid,
                            'ebsDaysToExpire': 7,
                            'snapshotStatus': 'incomplete',
                            'snapshotDate': 'incomplete',
                            'lifecycleStatus': 'start_7',
                            'snapshotID': 'incomplete',
                            'snapshotDaysToExpire': '30'
                        },
                        ConditionExpression='attribute_not_exists(volID)'
                        )
                except ClientError as e:
                    print(e.response['Error']['Message'])
            else:
                try:
                    response = table.update_item(
                        Key={
                            'volID': vid
                        },
                        UpdateExpression='set ebsDaysToExpire = ebsDaysToExpire + :val',
                        ExpressionAttributeValues={
                            ':val': decimal.Decimal(-1)
                        },
                        ReturnValues='UPDATED_NEW'
                    )
                    xdays = response['Attributes']['ebsDaysToExpire']
                    print xdays
                except ClientError as e:
                    print(e.response['Error']['Message'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM