2010-08-11 53 views

Respuesta

7

1.

Si utiliza una consulta es igual en una propiedad de la lista, se comprobará todos los elementos de la lista:

search = 2 
results = Foo.all().filter('bar =', search).fetch() 

2.

Puede utilizar una Filtro IN, pero tenga en cuenta que internamente esto hace que una consulta del almacén de datos para cada elemento en la lista, por lo que puede ser lento, y también hay un máximo de 30 consultas internas por solicitud.

items = [1, 2, 3] 
results = Foo.all().filter("id IN", items).fetch() 

Ver Introducing Queries para los detalles, tanto para 1 y 2, y ListProperty para más detalles sobre 1.

2

Para aquellos de ustedes me gustaría que no podían obtener la respuesta anterior al trabajo.

Usando gae versión 1.5.3

results = Foo.all().filter('bar =', search).fetch() 

da ningún resultado. Pero

results = Foo.all().filter('bar =', search).fetch(100) 
results = Foo.all().filter('bar =', search) 

da los resultados.

0

Además también puede utilizar GQL .. esto puede haber sido un acontecimiento que sucedió en el tiempo desde que se hizo la pregunta

Para la pregunta 1

wheres = 2 
pageSize = 10 
qry = db.GqlQuery("SELECT * FROM Foo WHERE bar = :1", wheres) 
Foos = qry.fetch(pageSize) 

Para la pregunta 2

wheres = [ 1, 3, 44, 101 ] 
pagesize = 10 
qry = db.GqlQuery("SELECT * FROM Foo WHERE bar IN (:1)", wheres) 
Foos = qry.Fetch(pageSize) 

Sin embargo, ten cuidado con la consulta. En realidad, ejecutará N subconsultas (una para cada elemento en su cláusula IN). Aquí está la documentación de Gql: https://developers.google.com/appengine/docs/python/datastore/gqlreference

Cuestiones relacionadas