You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DynamoDB使用IN操作符查询指定domain列表时参数校验报错如何解决

问题原因

  • 直接报错原因:DynamoDB的query 接口不支持ConditionExpression参数,该参数仅用于数据写入、更新、删除场景的条件校验,不属于查询操作的合法参数。
  • 底层逻辑问题:query 操作仅支持查询单个分区键值对应的数据,你需要查询多个分区键值匹配的条目,应该使用batch_get_item接口实现。

正确实现代码

from botocore.exceptions import ClientError

domains_hash =('196af8b5fca2fa43e8f328d7bd996eafc2d799c1b90233a84d43a5c8cd52ac97',
 'f4af8a416f59f0829e39006e59a3698a3580d310ae2617dcc418b33a90cc9f01',
 '3bf08cfb1b1a363c04ae2ce1c1177641ffb9ca09bc835faff47c025d5379ae6e',
 '6dd22c3e88531abea2dec8403a2a1d9bc23376470c4bc2b2145fd03deef270bb',
 'a402e656cf14b4794fd3762074ad4689cd086efa7c377ae19d68c4d38cee41f3',
 '6d9d3804f2fa1e876533cb3131b1c49414dfbcd710b4710922426244971145ca',
 'f92c9f9a1799252fec6d397a22271183b01625c279b4af324cb49056a62633f4')

try:
    # 构造批量查询的主键列表,domain为分区键
    keys = [{'domain': d} for d in domains_hash]
    # 调用batch_get_item查询
    res = endpoint_users.batch_get_item(
        Keys=keys
    )
except ClientError as e:
    raise DopeException

# 最终查询结果存储在 res['Responses'][你的表名] 中

额外注意点

  • batch_get_item 单次请求最多支持查询100个主键,如果你domains_hash的长度超过100,需要拆分成分批查询。
  • 接口会返回UnprocessedKeys字段存储查询失败的主键,生产环境建议添加重试逻辑处理未查询成功的条目。
  • 如果你需要针对每个分区键下的排序键做倒序排列,需要单独对每个分区键发起query请求,设置ScanIndexForward=False,再把结果合并。

内容的提问来源于stack exchange,提问作者Jeet Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:54:02