Python 仅通过指定索引键从具有范围键的DynamoDB表中检索项
我有一个带有主键和范围键集的表:Python 仅通过指定索引键从具有范围键的DynamoDB表中检索项,python,boto,amazon-dynamodb,Python,Boto,Amazon Dynamodb,我有一个带有主键和范围键集的表: user_id timestamp_joined 使用boto api层,是否有一种方法可以通过指定用户id(不带范围键)检索项目?每次执行getItem()查询而不指定范围键时,它都会失败。我只能通过指定范围键(timestamp_)使其工作 仅按用户_id获取时的错误消息如下: boto.exception.DynamoDBResponseError: DynamoDBResponseError: 400 Bad Request {'message':
user_id
timestamp_joined
使用boto api层,是否有一种方法可以通过指定用户id(不带范围键)检索项目?每次执行getItem()查询而不指定范围键时,它都会失败。我只能通过指定范围键(timestamp_)使其工作
仅按用户_id获取时的错误消息如下:
boto.exception.DynamoDBResponseError: DynamoDBResponseError: 400 Bad Request
{'message': 'One or more parameter values were invalid: The provided
key size does ot match with that of the schema', '__type':
'com.amazon.coral.validate#ValidationException'}
听起来像是要执行查询。您可以查询仅指定用户id(散列键)的表,查询将返回与该用户id匹配的所有项,而不考虑范围值
result = table.scan(Attr('user_id').eq(/number here/),
Limit=1,
ConsistentRead=True)
如果每个用户id有1个以上的项目,则可以将每次扫描或查询的结果数量限制为最多1M。例如,在此表中,用户id是唯一的。即使只查找一个结果,是否仍必须运行query()?不能仅对哈希键使用getItem()?听起来可能不应该在此表上指定范围键。在不指定范围键的情况下执行get\u项的唯一方法是如果表的架构不包含范围键。因此,如果时间戳不可用作辅助键,我不会将其包含在模式中。