如何替换变量以查询DynamoDB属性?

时间:2019-03-04 21:43:51

标签: python aws-lambda amazon-dynamodb

我正在尝试使用Python Lambda函数推广DynamoDB查询。有许多ProjectionExpression实例被设置为包括数据库中属性的实际值,例如。 G。 ProjectionExpression ='猫,狗'。我找不到在如下所示的变量中设置属性的任何示例。我想传递属性值以通过查询字符串事件进行检索。

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}'
)

This是这个主意,但用于javascript,并使用ExpressionAttributeNames。

这不可能是那么深奥的,但我现在才遇到Python,而且我还没有发现任何帖子。请告知。

2 个答案:

答案 0 :(得分:1)

说,如果您只想使用attr1分区键为attr2的{​​{1}}从表中获取pets-indexpet_type,则应该可以:

cats

答案 1 :(得分:0)

通过使用Python语法的一些额外困扰,我发现这是可行的:

ProjectionExpression=attr1+","+attr2

ProjectionExpression ='attr,attr2'的评估不正确,因此在尝试构建类似以下的响应时出现了KeyError:

'body': response['Items'][0][attr1]+"|"+response['Items'][0][attr2]

希望这可以为其他Python新手节省一些麻烦。