我正在尝试使用python lambda函数概括dynamodb查询。设置了投影表达的示例许多示例,以包括数据库中属性的实际值。G。投影表达='猫,狗'。我找不到在以下变量中设置的属性的任何示例。我想传递以查询字符串事件检索的属性值。
attr1 = 'cats'
attr2 = 'dogs'
response = table.query(
IndexName='pets-index',
KeyConditionExpression=Key(queryparamKey).eq(queryparamKeyID),
# Get two attr
# Does not work
#ProjectionExpression="attr1, attr2"
# Neither does this
#ExpressionAttributeNames='{"#attr1":attr1,"#attr2":attr2}'
)
这是这个想法,但适用于JavaScript并使用ExpressionAttributeNames。
这不可能是深奥的,但是我现在只是遇到Python,我还没有找到任何帖子。请建议。
说如果您想使用pets-index
从表中获得attr1
和attr2
,其中pet_type
分区密钥是cats
,这应该有效:
response = table.query(
IndexName='pets-index',
KeyConditionExpression='pet_type = :value',
ExpressionAttributeValues={
':value': {'S': 'cats'}
},
ProjectionExpression='attr1,attr2'
)
通过python语法的一些额外挣扎,我发现这是有效的:
ProjectionExpression=attr1+","+attr2
投影expressexpression ='attr2'未正确评估,因此当我尝试构建类似的响应时,我得到了一个KeyError:
'body': response['Items'][0][attr1]+"|"+response['Items'][0][attr2]
希望这能节省一些其他新手,有些挣扎。