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?
Réponses
Trop de publicités? 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'))
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.