2016-12-26 5 views
1

J'utilise TinyDB dans mon projet python. Cependant, pour rendre la logique efficace, je dois pouvoir obtenir plusieurs objets dans une requête. Ma préférence serait d'utiliser une listeTinyDB obtenir tous les ID dans la requête de liste

listOfIDs = ['123', '456'] 

J'utilise la dernière version de Python et l'implémentation de TinyDB.

Je la mise en œuvre suivante:

from tinydb import TinyDB, Query 
db = TinyDB('db.json') 
myDBQuery= Query() 
db.insert({'id': '123', 'name': 'bob'}) 
db.insert({'id': '456', 'name': 'mary'}) 
result = db.search(myDBQuery.id.all(['123', '456'])) 
print(result) 

Cependant, je continue à avoir les éléments suivants à la suite:

[] 

Je sais que ma mise en œuvre fonctionne parce que quand je fais ce qui suit, je reçois les résultats escomptés:

result = db.search((myDBQuery.id == '123') | myDBQuery.id == '456')) 

Quelqu'un sait comment interroger une liste dans TinyDB?

Quelqu'un sait comment interroger avec une liste dans TinyDB?

EDIT

Pour ceux qui se demandent, il n'y a pas moyen de le faire avec la mise en œuvre actuelle. Ma seule solution est de créer quelque chose comme le

suivant
def getAllObjectsMatchingId(listOfIds): 

tempList = [] 

for idMember in tempList: 
    result = db.search(myDBQuery.id == idMember) 
    tempList.append(result) 

return tempList 

Répondre

3

.all renvoie true seulement si tous les éléments de la liste correspondent à la requête

.any pourrait travailler au lieu

result = db.search(myDBQuery.id.any(['123', '456'])) 

EDIT DE LA QUESTION OP: S'il vous plaît voir mon edit ci-dessus

+0

J'apprécie l'aide mais cela ne semble pas travailler non plus. Ceci est terriblement étrange car il devrait être en mesure d'accepter cela en raison de la documentation: http://tinydb.readthedocs.io/en/latest/usage.html – booky99

+0

S'il vous plaît jeter un oeil dans la section des requêtes advacnced http: //tinydb.readthedocs .io/fr/latest/usage.html # advanced-queries. Il dit que le champ doit être une liste. –

+0

Je peux interpréter incorrectement, mais il est dit qu'un utilisateur peut être et Admin ou utilisateur dans la requête. Donc, il devrait être capable de récupérer tous les types de groupes correspondant à cette requête – booky99