2017-02-21 42 views
2

我写了一些Python代码,我想通过排序键查询dynamoDB数据。 我记得我可以用后续的代码的成功:dynamodb如何仅通过排序键进行查询?

table.query(KeyConditionExpression=Key('event_status').eq(event_status)) 

我的表结构列

primary key:event_id 
sort key: event_status 

回答

2

,如果你想获得来自DynamoDB的数据,而无需使用散列键属性扫描API应该使用值。

实施例: -

fe = Attr('event_status').eq("new"); 

response = table.scan(
     FilterExpression=fe   
    ) 

for i in response['Items']: 

print(json.dumps(i, cls=DecimalEncoder)) 

while 'LastEvaluatedKey' in response: 
    response = table.scan(  
     FilterExpression=fe,   
     ExclusiveStartKey=response['LastEvaluatedKey'] 
     ) 

    for i in response['Items']: 
     print(json.dumps(i, cls=DecimalEncoder)) 
+2

注意,扫描是不一样的查询。你将遍历所有的值,所以它比查询效率低得多。如果你真的需要高效地查询“event_status”,你应该考虑为该字段创建一个GSI。 – garnaat

相关问题