En la GQL reference, se anima a utilizar la palabra clave IN
con una lista de valores, y para construir una Llave de la mano la consulta GQLGQL de consultas con __key__ en lista de claves
SELECT * FROM MyModel WHERE __key__ = KEY('MyModel', 'my_model_key')
tendrá éxito. Sin embargo, utilizando el código que se puede esperar para trabajar:
SELECT * FROM MyModel WHERE __key__ IN (KEY('MyModel', 'my_model_key1'),
KEY('MyModel', 'my_model_key2'))
en el Visor de almacén de datos, hay una queja de la "cadena de consulta GQL no válida."
¿Cuál es la forma correcta de formatear una consulta?
ACTUALIZACIÓN: Esto no es posible con el SDK actual. Como menciono en mi comentario, cuando se utiliza una lista, solo una referencia (por ejemplo, :1
o :email
) o un int, float, string, boolean o literal nulo son entradas de lista aceptables.
SEGUNDA ACTUALIZACIÓN: Corregí el error y ahora es posible realizar tales consultas. La solución se puede encontrar en Google Code Hosting diff.
PD Sé que hay formas más eficientes de hacer esto en Python (sin construir una consulta GQL) y usar el remote_api, pero cada llamada al remote_api cuenta en contra de la cuota. En un entorno donde la cuota no es (necesariamente) gratuita, las consultas rápidas y sucias son muy útiles.
¿De verdad crees que el número de entidades que buscas a mano en la consola va a agregar a una cantidad significativa de cuota consumida si lo hiciste a través de remote_api? –
No. Nuevamente, me pregunto cómo estructurar la consulta correctamente. El segundo fragmento en mi publicación parece que no sería una "cadena de consulta GQL no válida". ¿Es el caso que 'WHERE __key__ IN' no es válido GQL? – bossylobster
Todavía estoy confundido por qué quieres hacer esto. Es una forma particularmente ineficiente de captar entidades. –