W GQL reference, to zaleca się użyć słowa kluczowego IN
z listy wartości i skonstruować klucz z ręki zapytanie GQLGQL Query z __key__ w listę kluczy
SELECT * FROM MyModel WHERE __key__ = KEY('MyModel', 'my_model_key')
uda. Jednak przy użyciu kodu można oczekiwać, aby pracować:
SELECT * FROM MyModel WHERE __key__ IN (KEY('MyModel', 'my_model_key1'),
KEY('MyModel', 'my_model_key2'))
w magazynie danych Viewer, jest skarga „Nieprawidłowy ciąg kwerendy GQL”.
Jaki jest prawidłowy sposób sformułowania takiego zapytania?
AKTUALIZACJA: Nie można tego zrobić z bieżącym zestawem SDK. Jak zauważam w moim komentarzu, przy korzystaniu z listy dopuszczalne są jedynie pozycje odniesienia (np. :1
lub :email
) lub int, float, string, boolean lub null dosłowny.
DRUGA AKTUALIZACJA: Naprawiłem błąd i można teraz wykonywać takie zapytania. Naprawa można znaleźć w Google Code Hosting diff.
PS Wiem, że są bardziej wydajne sposoby na to w Pythonie (bez tworzenia kwerendy GQL) i przy użyciu remote_api, ale każde wywołanie remote_api liczy się z przydziałem. W środowisku, w którym limit nie jest (koniecznie) bezpłatny, szybkie i brudne zapytania są bardzo pomocne.
Czy naprawdę sądzisz, że liczba elementów, które pobierasz ręcznie w konsoli, zwiększy znaczną ilość zużytego limitu, jeśli zrobisz to za pomocą remote_api? –
No Ponownie, właśnie zastanawiam się, jak poprawnie ułożyć zapytanie. Drugi fragment w moim poście wygląda na to, że nie byłby to "niepoprawny ciąg zapytania z GQL". Czy jest tak, że "WHERE __key__ IN" jest nieprawidłowym GQL? – bossylobster
Wciąż jestem zdezorientowany, dlaczego chcesz to zrobić. Jest to szczególnie nieefektywny sposób pobierania obiektów. –