boto dynamodb batch_write和delete_item - '提供的关键元素与架构不匹配'

时间:2014-02-16 21:31:33

标签: python boto amazon-dynamodb

我正在尝试使用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在我的表中不是唯一的。

鉴于此,有没有办法删除具有相同主键的多个项目而不指定辅助密钥?

1 个答案:

答案 0 :(得分:7)

您只提供密钥的哈希部分而不是项目(哈希+范围) - 这就是您收到错误而无法删除项目的原因。

您不能要求DynamoDB使用哈希键删除所有项目(与查询获取所有项目的方式相同)

阅读Steffen的this answer了解更多信息