Comment combiner deux colonnes et appliquer un filtre? Par exemple, je souhaite rechercher à la fois dans les colonnes "prénom" et "nom" en même temps. Voici comment je l'ai fait si je ne cherchais qu'une seule colonne:
query = meta.Session.query(User).filter(User.firstname.like(searchVar))
Vous pouvez utiliser la fonction or_
de SQLAlchemy pour rechercher dans plusieurs colonnes (le trait de soulignement est nécessaire pour le distinguer du or
de Python) .
Voici un exemple:
from sqlalchemy import or_
query = meta.Session.query(User).filter(or_(User.firstname.like(searchVar),
User.lastname.like(searchVar)))
Vous pouvez simplement appeler filter
plusieurs fois:
query = meta.Session.query(User).filter(User.firstname.like(searchVar1)). \
filter(User.lastname.like(searchVar2))
Il existe plusieurs façons de procéder:
Utilisation de filter()
(opérateur et)
query = meta.Session.query(User).filter(
User.firstname.like(search_var1),
User.lastname.like(search_var2)
)
Utilisation de filter_by()
(opérateur et)
query = meta.Session.query(User).filter_by(
firstname.like(search_var1),
lastname.like(search_var2)
)
Chaînage filter()
ou filter_by()
(et opérateur)
query = meta.Session.query(User).\
filter_by(firstname.like(search_var1)).\
filter_by(lastname.like(search_var2))
Utilisation de or_()
, and_()
et not()
from sqlalchemy import and_, or_, not_
query = meta.Session.query(User).filter(
and_(
User.firstname.like(search_var1),
User.lastname.like(search_var2)
)
)