【问题标题】:Batch delete items for a dynamodb table with hash and range key使用哈希和范围键批量删除 dynamodb 表的项目
【发布时间】:2020-06-01 09:53:44
【问题描述】:

我正在尝试使用 boto3 python 库为 dynamodb 表执行批量写入项。该表同时具有哈希和范围键。当我对另一个只有哈希键的表执行相同操作时,它运行良好。我想知道在执行批量写入项操作时如何同时添加哈希和范围键。

import boto3
from boto3.dynamodb.conditions import Attr,Key

dynamodb = boto3.resource('dynamodb', 'us-east-2')
table = dynamodb.Table('edc_test')

scan = table.scan(
    #ProjectionExpression='#k',
    ProjectionExpression='resource_id',
    #ProjectionExpression='version_id',
    FilterExpression=Attr('Health.New version - Veracity unavailable').eq("A new dataset is available but IDQ rules are not generated yet")
)
items=scan['Items']
print('length',str(len(items)))
print(items)

def lambda_handler(event, context):
    with table.batch_writer() as batch:
        for each in scan['Items']:
            batch.delete_item(Key=each)

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb boto3


    【解决方案1】:
        ProjectionExpression='version_id,resource_id',
        FilterExpression=Attr('Health.New version - Veracity unavailable').eq("A new dataset is available but IDQ rules are not generated yet")
    #ExpressionAttributeNames={
    #    '#k': 'name'
    #}
        )
    items=scan['Items']
    print('length',str(len(items)))
    print(items)
    
    
    #response = table.table.delete_item(Key={resource_id:1})
    
    with table.batch_writer() as batch:
        #for each in scan['Items']:
         #   batch.delete_item(Key=each)
        for each in scan['Items']:
                #batch.delete_item(Key={'version_id': each['version_id']})
                batch.delete_item(Key={'resource_id': each['resource_id'], 'version_id': each['version_id']})
    

    在扫描投影表达式中包含排序键并在删除批处理项中包含相同的排序键,它起作用了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 2023-04-10
      相关资源
      最近更新 更多