我正在尝试使用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,而且我还没有发现任何帖子。请告知。
答案 0 :(得分:1)
说,如果您只想使用attr1
分区键为attr2
的{{1}}从表中获取pets-index
和pet_type
,则应该可以:
cats
答案 1 :(得分:0)
通过使用Python语法的一些额外困扰,我发现这是可行的:
ProjectionExpression=attr1+","+attr2
ProjectionExpression ='attr,attr2'的评估不正确,因此在尝试构建类似以下的响应时出现了KeyError:
'body': response['Items'][0][attr1]+"|"+response['Items'][0][attr2]
希望这可以为其他Python新手节省一些麻烦。