Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 仅通过指定索引键从具有范围键的DynamoDB表中检索项_Python_Boto_Amazon Dynamodb - Fatal编程技术网

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项的唯一方法是如果表的架构不包含范围键。因此,如果时间戳不可用作辅助键,我不会将其包含在模式中。