首页 > 解决方案 > 使用哈希和范围键批量删除 dynamodb 表的项目

问题描述

我正在尝试使用 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-servicesamazon-dynamodbboto3

解决方案


    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']})

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


推荐阅读