SQLAlchemy et la pagination
J'ai besoin de lire des données à partir de toutes les lignes d'une grande table, mais je ne veux pas tirer toutes les données en mémoire à la fois. Est-il un SQLAlchemy fonction qui va gérer la pagination? C'est, tirez sur plusieurs lignes dans la mémoire et de récupérer plus si nécessaire.
- Je comprendre que vous pouvez faire cela avec limit
et offset
comme cet article suggère, mais je préfère ne pas manipuler que si je n'ai pas à.
OriginalL'auteur Kevin Burke | 2012-03-28
Vous devez vous connecter pour publier un commentaire.
Voir cette réponse. En bref, vous pouvez utiliser le
yield_per
opérateur.À la couche de base de données,
limit
etoffset
itération est en fait la plus appropriée scénario, exactement comme à l'origine documenté. Je crois que le raisonnement ici est qu'est ce qui se passe avec la base de données de toute façon, ainsi, vous pouvez fournir votre proprefor
boucle. 🙂En fait, non, je suis très mal. Je suis à jour de ma réponse, parce que j'ai trouvé un plus définitif des ressources.
OriginalL'auteur MrGomez
Si vous utilisez un Flacon de SqlAlchemy, voir la paginer méthode de
query
.paginate
offre plusieurs méthode pour simplifier la pagination.Première page doit être 1 dans le cas contraire le
.total
renvoie l'exception divisé par zérodict(**request.args)
bêtement dans une autre région et d'obtenir des résultats inattendus.Non, cela pourrait encore être une mauvaise idée car si vous vérifiez la source qu'ils utilisent limit et offset. Maintenant, si la valeur de décalage est trop grand puis la base de données serait aller à travers l'ensemble de ces valeurs ainsi à l'origine d'un problème de performances..
OriginalL'auteur radeklos
Si vous n'utilisez pas de Flacon, vous pouvez utiliser SqlAlchemy fonction "tranche" ou un combo de 'limite' & 'offset', comme mentionné ici. E. g.:
si nous n'utilisons pas de limite de décalage ? toute recommander ???
Datetime ou tout autre filtres sont un bon moyen de les faire. Parce que la limite de décalage toujours extrait les lignes et puis les décalages. Mieux les filtrer, puis extraire le filtre à la place.
OriginalL'auteur CubeBot88