我如何替换变量来查询dynamoDB属性



我正在尝试使用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从表中获得attr1attr2,其中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]

希望这能节省一些其他新手,有些挣扎。

最新更新