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
相关产品推荐
相关产品推荐

