J'ai un problème en utilisant des requêtes qui utilisent plus d'un filtre (j'utilise NDB à la place DB):Comment filtrer plus d'une propriété dans Google App Engine? (Python)
...
foo = something.query(something.a==5, something.b<8, something.c<3).order(something.b).fetch(1)
...
Je reçois cette erreur:
Only one inequality filter per query is supported.
je pouvais résoudre ce problème en utilisant quelque chose comme ceci:
...
foo = something.query(something.a==5, something.b<8).order(something.b).fetch()
#loop through each one of those rows and add those who have foo.c<3 to some array
mais cette solution n'est pas vraiment géniale. Est-ce que quelqu'un a une meilleure idée?
Merci
Clever. Vous pouvez simplifier ceci à: something.query (quelque chose.a == 5, quelque chose.b <8, quelque chose.c.IN ([1, 2])): vous obtenez le niveau AND le plus élevé gratuitement, et IN est un implicite OU sur la même propriété et des valeurs différentes. Mais en général la restriction elle-même reste - vous ne pouvez pas utiliser <, <=, >,> = ou! = Sur plus d'une propriété dans la même requête. (! = se traduit par < OR >.) –
Cela ne résout cependant pas le problème général - et si vous vouliez quelque chose.c <100? – user1357607
@GuidovanRossum Et si quelque chose.c est un flotteur? Comme dans ce cas [comparaisons d'inégalités multiples] (http://stackoverflow.com/questions/34980755/ndb-multi-inequality-comparision-join-multi-queries-cursors-python-googl). Pourriez-vous s'il vous plaît m'aider avec cela? –