Comment puis-je la requête DynamoDB2 tableau global index secondaire uniquement à l'aide de boto 2.25.0?
C'est une continuation** de ma quête pour passer de l'ordinaire DynamoDB tables de DynamoDB2 avec Mondial Secondaire Indices.
J'ai donc créé ma table, comme le montre ici puis ajouté les deux éléments suivants:
table.put_item(data={'firstKey': 'key01', 'message': '{"firstKey":"key01", "comments": "mess 1 w/o secondKey"}'})
table.put_item(data={'firstKey': 'key02', 'secondKey':'skey01', 'message': '{"firstKey":"key02", "parentId":"skey01", "comments": "mess 2 w/secondKey"}'})
Ce que je veux faire maintenant est de récupérer des éléments soit par leur (i) unique firstKey
valeurs ou (ii) unique secondKey
valeurs. Le 1er est facile:
res1 = table.get_item(firstKey='key01')
res1['message']
Je ne peux pas comprendre comment le faire le 2ème. Cela ne fonctionne pas:
res2 = table.get_item(secondKey='skey01')
la production de The provided key element does not match the schema
. OK c'est prévu. Quand je fais cela:
res2 = table.query(secondKey='skey01',index='secondKeyIndex')
- Je obtenir You must specify more than one key to filter on
.
Alors, comment puis-je le faire fonctionner? Notez que lorsque j'ai la valeur de secondKey
d'un article, je ne sais PAS son correspondant firstKey
.
=====
Mise à JOUR: Voici un couple d'autres choses que j'ai essayé:
Ce
res2 = table.query(secondKey__eq='skey01',index='secondKeyIndex')
produit
boto.dynamodb2.exceptions.QueryError: You must specify more than one key to filter on.
Dans le bloc ci-dessous, la query
déclaration ne produit pas d'erreurs
res2 = table.query(secondKey='skey01',secondKey__eq='skey01',index='secondKeyIndex')
for r in res2:
print res2['secondKey']
mais la print
m'a donné
boto.dynamodb2.exceptions.UnknownFilterTypeError: Operator 'secondKey' from 'secondKey' is not recognized.
OriginalL'auteur I Z | 2014-02-13
Vous devez vous connecter pour publier un commentaire.
Il est possible à l'aide de LSI/GSI.
Voir le nom de boto tutoriel ici (recherche de LSI, et vous obtiendrez l'exemple).
DynamoDB2 — boto v2.25.0 : http://boto.readthedocs.org/en/latest/ref/dynamodb2.html
Ajouter tout un exemple de travail (essayé avec le dynamo local: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.DynamoDBLocal.html)
Le résultat de l'exécution est:
Aussi d'ajouter les paquets (en Raison de Dynamo1/2 - il y a possibilité de l'erreur):
boto
. Pourriez-vous svp me montrer exactement la syntaxe de la requête pour mon exemple ci-dessus? Merci BTW, si j'ai besoin de modifier la façon dont j'ai créer la table pour faire ce travail, c'est bien trop. J'ai juste besoin d'être en mesure de récupérer les éléments soit parfirstKey
ou parsecondKey
.OK Ici, vous allez: j'ai édité la réponse ci-dessus avec un exemple de travail. J'ai juste essayé aujourd'hui et assurée cela fonctionne avec le Dynamo DB Local. Un problème commun qui les gens font face est d'avoir une ancienne version de Dynamo Local. Assurez-vous de télécharger la dernière et essayer. J'ai essayé aujourd'hui avec dynamodb_local_2013-12-12
Essayez et laissez-moi savoir si cela fonctionne pour vous !
il a travaillé merci!
OriginalL'auteur Sony Kadavan
Pour tous ceux qui recherchent une version plus récente lors de l'utilisation de query_2: découvrez https://github.com/boto/boto/issues/2708
OriginalL'auteur philmaweb
Requête arguments sont mis en forme différemment.
Je n'ai pas essayé, mais je crois que la syntaxe doit être:
OriginalL'auteur Jharrod LaFon