Nel GQL reference, si è incoraggiato a utilizzare la parola chiave IN
con un elenco di valori, e di costruire una chiave di mano query GQLGQL query con __key__ nella lista delle chiavi
SELECT * FROM MyModel WHERE __key__ = KEY('MyModel', 'my_model_key')
avrà successo. Tuttavia, utilizzando il codice che ci si aspetta di lavorare:
SELECT * FROM MyModel WHERE __key__ IN (KEY('MyModel', 'my_model_key1'),
KEY('MyModel', 'my_model_key2'))
nel Visualizzatore Datastore, v'è una denuncia di "non valido stringa di query GQL."
Qual è il modo corretto per formattare tale query?
AGGIORNAMENTO: non è possibile farlo con l'SDK corrente. Come noto nel mio commento, quando si utilizza un elenco, solo un riferimento (ad esempio :1
o :email
) o un valore int, float, stringa, booleano o valore letterale null sono voci di elenco accettabili.
SECONDO AGGIORNAMENTO: Ho corretto il bug ed ora è possibile eseguire tali query. La correzione può essere trovata in Google Code Hosting diff.
PS So che ci sono modi più efficienti per farlo in Python (senza costruire una query GQL) e usando remote_api, ma ogni chiamata a remote_api conta contro quota. In un ambiente in cui la quota non è (necessariamente) libera, le query veloci e sporche sono molto utili.
Pensa davvero che il numero di entità che si scaricano manualmente nella console aggiungerà una quantità significativa di quota consumata se lo si è fatto tramite remote_api? –
No. Ancora una volta, mi sto solo chiedendo come strutturare correttamente la query. Il secondo snippet nel mio post sembra che non sia una "stringa di query GQL non valida". È il caso che 'WHERE __key__ IN' non è valido GQL? – bossylobster
Sono ancora confuso perché vuoi farlo, però. È un modo particolarmente inefficiente per recuperare le entità. –