我正在尝试使用boto和python删除DynamoDB表中的大量项目。我的表设置时使用主键作为设备ID(考虑MAC地址。)表中有多个条目用于每个设备ID,因为辅助密钥是UNIX时间戳。
从我的阅读中,这段代码应该有效:
from boto.dynamodb2.table import Table
def delete_batch(self, guid):
table = Table('Integers')
with table.batch_write() as batch:
batch.delete_item(Id=guid)
来源:http://docs.pythonboto.org/en/latest/dynamodb2_tut.html#batch-writing
但是它返回'提供的关键元素与架构不匹配'作为错误消息。
我怀疑问题是因为guid在我的表中不是唯一的。
鉴于此,有没有办法删除具有相同主键的多个项目而不指定辅助密钥?
答案 0 :(得分:7)
您只提供密钥的哈希部分而不是项目(哈希+范围) - 这就是您收到错误而无法删除项目的原因。
您不能要求DynamoDB使用哈希键删除所有项目(与查询获取所有项目的方式相同)
阅读Steffen的this answer了解更多信息