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

Lambda函数用Boto3查DynamoDB报错:name 'Key' is not defined

解决boto3访问DynamoDB时NameError: name 'Key' is not defined的问题

这个问题我之前也踩过坑,本质就是你没有导入Key这个条件构造器类——它并不是boto3默认命名空间里的对象,必须显式导入才能使用。

具体解决步骤:

  • 最简单的方式是在代码开头添加导入语句:
    from boto3.dynamodb.conditions import Key
    
  • 要是你不想单独导入,也可以直接用完整模块路径调用Key:
    response = dynamoTable.query(
        KeyConditionExpression=boto3.dynamodb.conditions.Key('userID').eq(asset)
    )
    

完整示例代码

给你一个清晰的完整用法示例,帮你理顺逻辑:

import boto3
from boto3.dynamodb.conditions import Key

# 初始化DynamoDB资源
dynamodb = boto3.resource('dynamodb')
dynamoTable = dynamodb.Table('你的表名称')

def getAssetExistance(asset):
    response = dynamoTable.query(
        KeyConditionExpression=Key('userID').eq(asset)
    )
    # 根据查询结果判断是否存在
    return len(response['Items']) > 0

额外提醒

不管你用boto3的client还是resource模式操作DynamoDB,只要用到Key、Attr这类条件构造器,都得从boto3.dynamodb.conditions模块导入,这是新手很容易忽略的细节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:37:51