amazon-web-services - 使用哈希和范围键批量删除 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)
解决方案
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']})
在扫描投影表达式中包含排序键并在删除批处理项中包含相同的排序键,它起作用了。
推荐阅读
- javascript - WordPress 可访问性 打开选项卡上的子菜单
- javascript - 按包含过滤,然后按startsWith排序
- excel - 在 VBA 中使用动态文件名查找
- angular - ng build 后 Angular 无法访问组件
- python - 在python中创建字典列表
- javascript - JSDocs 当前未启用对实验性语法“jsx”的支持
- c# - 无法将 DataGridViewComboBoxColumn 中的值设置为绑定的 DataGridView
- excel - 如何根据excel中的特定条件向上和向下舍入数字?
- powerbi - POWER BI:我希望 DAX 公式在我的主表中找出组的第一个最高值和第二个最高值
- arrays - 求范围 [l:r] 中数字重复的频率 (r-l+1)/2 次