J'essaie de créer par programme une expression FilterExpression en Python pour une requête DynamoDB basée sur les paramètres fournis par l'utilisateur pour un attribut spécifique (appelons-le 'ATTRIBUTE1
').DynamoDB Query FilterExpression Conditions multiples de chaînage Python
Tous les paramètres fournis par l'utilisateur pour lesquels je dois filtrer sont dans une liste. Par exemple: ['Parameter1', 'Parameter2']
qui serait alors prendre la forme Attr('ATTRIBUTE1').eq(PARAMETER1)&Attr.('ATTRIBUTE1').eq(PARAMETER2)
Comment puis-je créer un programme Attr pour mon FilterExpression comme celle-ci qui est basé sur un nombre variable de paramètres utilisateur fourni (s)?
Parfois, je pourrais avoir ['Parameter1']
et une autre fois que je pourrais avoir ['Parameter1', 'Parameter2', 'Parameter3']
qui doivent se transformer en Attr('ATTRIBUTE1').eq('Parameter1')
et Attr('ATTRIBUTE1').eq('Parameter1')&Attr('ATTRIBUTE1').eq('Parameter2')&Attr('ATTRIBUTE1').eq('Parameter3')
, respectivement.
Je n'ai pas encore trouvé de solution et j'apprécierais toute aide. Merci d'avance.
Merci ce qui est excellent. Comme question de suivi, j'aimerais filtrer la requête si un attribut (pas la clé de partition ou de tri) est supérieur à x et inférieur à y. J'obtiens l'erreur suivante en essayant ceci et ai essayé un tas de différentes solutions sans succès: 'FilterExpression invalide: Type d'opérande incorrect pour l'opérateur ou la fonction; opérateur ou fonction:> =, type d'opérande: M: 'My FilterExpression et ExpressionAttributeValues comme suit:' FilterExpression = 'ATTRIBUTE> =: x ET ATTRIBUTE <=: y'' 'ExpressionAttributeValues = {': x ': {' N ' : '100'}, ': y': {'N': '1000'}} '. Merci! – listentoreason
Vous essayez d'utiliser ces opérateurs sur un attribut de carte, c'est pourquoi vous obtenez cette erreur. Cela devrait fonctionner 'ExpressionAttributeValues = {': x': 100, ': y': 1000}' – ozbey
Merci beaucoup pour l'aide - Je l'ai mis en marche, et j'ai beaucoup appris sur les requêtes DynamoDB. Merci encore. – listentoreason