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

使用Python调用DynamoDB GetItem报错:键元素与架构不匹配

问题原因及解决办法

你犯了一个关键错误:get_item方法**仅支持通过表的主键(分区键+可选排序键)**查询数据,不管你有没有创建全局索引,这个方法都不会使用索引。你传入的player_id和type不是表的主键,所以必然报错。

要利用全局索引查询,你需要改用query方法,同时指定索引名称,并且按照索引的键结构编写查询条件。假设你的全局索引是以player_id作为分区键、type作为排序键创建的,修改后的代码如下:

response = table.query(
    IndexName='你的全局索引名称',  # 替换成你实际创建的索引名
    KeyConditionExpression=Key('player_id').eq(22892251) & Key('type').eq(1)
)
items = response['Items']
if items:
    print(items[0])  # 因为是唯一组合,取第一个结果即可
else:
    print("未找到匹配数据")

额外说明

  • 如果你用的全局索引只把player_id作为分区键,type是投影属性,那KeyConditionExpression只能指定player_id,然后用FilterExpression过滤type,但这种方式效率不如把type设为索引排序键高。
  • 如果player_id+type的组合是全局唯一的,也可以考虑将它们设为表的复合主键,但这需要修改表结构,适合新表或能接受数据迁移的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 06:06:45