Cuando use la siguiente consulta:

Foo.query.filter_by(bar="bar")[:20]

¿Se cargan todos los objetos que coinciden con el filtro y solo elijo los primeros 20 o solo se cargan los primeros 20 objetos? Y si es el segundo, ¿hay alguna forma de cargar solo un número específico de objetos?

Gracias de antemano chicos.

0
a_coder 27 feb. 2021 a las 01:09

2 respuestas

La mejor respuesta

Ejecuta la consulta y el filtro, luego usa el corte ordinario de Python del resultado.

Si desea que cargue solo el número específico de registros, utilice el método slice().

Foo.query.filter_by(bar="bar").slice(0,20)

Esto agrega una cláusula LIMIT a la consulta, por lo que la base de datos nunca devuelve ningún registro fuera del rango.

1
Barmar 26 feb. 2021 a las 22:29

El [] es python puro y no está relacionado con la consulta. Significa que se devuelven todos los registros (basados ​​en el filtro y solo toma 20). Utilice limit si desea devolver solo 20 registros de db. Consulte consulta de SQLAlchemy para devolver solo n resultados

0
balderman 26 feb. 2021 a las 22:25