2017-10-19 40 views
0

Je lis docs officiels http://boto3.readthedocs.io/en/latest/_modules/boto3/dynamodb/conditions.htmlDynamoDB boto3 condition IN

Vous pouvez créer une condition comme ceci:

Attr(key).eq(value) 

Si vous vérifiez si value égal à la valeur de key en utilisant class Attr() avec la méthode éq. Mais comment utilisez-vous un opérateur SQL IN?

Je voudrais interroger si la valeur de la valeur de clé

Au docs apparaître juste une en classe et je ne vois aucun exemple ou comment utiliser

class In(ComparisonCondition): 
    expression_operator = 'IN' 
    has_grouped_values = True 

Répondre

1

opérateur IN ne peut pas être utilisé dans KeyConditionExpression, c'est-à-dire pour obtenir plusieurs valeurs de clé de hachage à l'aide de l'API de requête. DynamoDB ne prend pas en charge cette fonctionnalité pour le moment.

Si vous devez récupérer plusieurs valeurs de clé de hachage, veuillez utiliser Batch Get Item api.

Exemple de code: -

email1 = "[email protected]" 
email2 = "[email protected]" 

try: 
    response = dynamodb.batch_get_item(
    RequestItems={ 
     'users': { 
      'Keys': [ 
       { 
        'email': email1 
       }, 
       { 
        'email': email2 
       }, 
      ],    
      'ConsistentRead': True    
     } 
    }, 
    ReturnConsumedCapacity='TOTAL' 
) 
except ClientError as e: 
    print(e.response['Error']['Message']) 
else: 
    item = response['Responses'] 
    print("BatchGetItem succeeded:") 
    print(json.dumps(item, indent=4, cls=DecimalEncoder))