382 votes

Quelle est la différence entre filter et filter_by dans SQLAlchemy?

Quelqu'un pourrait-il expliquer la différence entre les fonctions filter et filter_by dans SQLAlchemy? Je suis confus et ne peut pas vraiment voir la différence. Lequel dois-je utiliser?

496voto

Daniel Velkov Points 9244

filter_by est utilisé pour les requêtes simples sur les noms de colonnes comme

db.users.filter_by(name='Joe')

La même chose peut être accomplie avec filter en écrivant

db.users.filter(db.users.name=='Joe')

mais vous pouvez également écrire des requêtes plus puissantes contenant des expressions comme

db.users.filter(or_(db.users.name=='Ryan', db.users.country=='England'))

134voto

zzzeek Points 22617

Nous les avons en fait fusionnés ensemble, c’est-à-dire qu’il y avait une méthode de type "filter" qui acceptait * args et ** kwargs, où vous pouviez passer une expression SQL ou des arguments de mot clé (ou les deux). En fait, je trouve cela beaucoup plus pratique, mais les gens ont toujours été confus, car ils continuent généralement à dépasser la différence entre column == expression et keyword = expression . Nous les avons donc séparés.

40voto

Johannes Charra Points 6720

filter_by utilise des arguments de mots clés, tandis que filter autorise les arguments de filtrage pythonique comme filter(User.name=="john")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X