使用查询从DynamoDB检索所有项目?

 fdsafjlkjgklg_431 发布于 2023-01-29 18:42

我试图使用查询检索dynamodb表中的所有项目.以下是我的代码:

import boto.dynamodb2
from boto.dynamodb2.table import Table
from time import sleep

c    = boto.dynamodb2.connect_to_region(aws_access_key_id="XXX",aws_secret_access_key="XXX",region_name="us-west-2")

tab  = Table("rip.irc",connection=c)

x    = tab.query()

for i in x:
    print i
    sleep(1)

但是,我收到以下错误:

ValidationException: ValidationException: 400 Bad Request
{'message': 'Conditions can be of length 1 or 2 only', '__type': 'com.amazon.coral.validate#ValidationException'}

我所拥有的代码非常简单,并且不受boto dynamodb2文档的影响,所以我不确定为什么会出现上述错误.任何见解都将受到赞赏(新的,有点失去).谢谢

编辑:我有一个哈希键和一个范围键.我能够通过特定的哈希键进行查询.例如,

x = tab.query(hash__eq="2014-01-20 05:06:29")

我怎样才能检索所有物品?

2 个回答
  • 好吧,想通了.如果有人需要:

    如果不指定特定的哈希键,则无法在表上使用查询方法.使用的方法是扫描.所以,如果我更换:

    x    = tab.query()
    

    x    = tab.scan()
    

    我收到了表格中的所有物品.

    2023-01-29 18:46 回答
  • 我很时髦,但它会给你一个暗示.错误:

    {'message': 'Conditions can be of length 1 or 2 only'}
    

    告诉你你的关键条件可以是长度1 - > hashKey,或长度2 - > hashKey + rangeKey.所有在键顶部查询的内容都会引发此错误.出现此错误的原因是:您尝试运行搜索查询但使用键条件查询.您必须添加单独的filterCondition才能执行查询.我的代码

        String keyQuery = " hashKey = :hashKey and rangeKey between :start and :end "
        queryRequest.setKeyConditionExpression(keyQuery)// define key query
        String filterExpression = " yourParam = :yourParam "
        queryRequest.setFilterExpression(filterExpression)// define filter expression
        queryRequest.setExpressionAttributeValues(expressionAttributeValues)
        queryRequest.setSelect('ALL_ATTRIBUTES')
        QueryResult queryResult = client.query(queryRequest)
    

    2023-01-29 18:46 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有