sqlalchemy фильтр нескольких столбцов - PullRequest
50 голосов
/ 26 июля 2010

Как мне объединить два столбца и применить фильтр?Например, я хочу искать в столбцах «имя» и «фамилия» одновременно.Вот как я это делал, если искал только один столбец:

query = meta.Session.query(User).filter(User.firstname.like(searchVar))

Ответы [ 3 ]

52 голосов
/ 28 июля 2010

Вы можете использовать функцию or_ SQLAlchemy для поиска более чем в одном столбце (подчеркивание необходимо, чтобы отличить его от собственного or Python).

Вот пример:

from sqlalchemy import or_
query = meta.Session.query(User).filter(or_(User.firstname.like(searchVar),
                                            User.lastname.like(searchVar)))
50 голосов
/ 25 сентября 2010

Вы можете просто позвонить filter несколько раз:

query = meta.Session.query(User).filter(User.firstname.like(searchVar1)). \
                                 filter(User.lastname.like(searchVar2))
37 голосов
/ 22 июня 2017

Есть несколько способов сделать это:

Использование фильтра (и оператора)

query = meta.Session.query(User).filter(
    User.firstname.like(search_var1),
    User.lastname.like(search_var2)
    )

Использование filter_by (и оператора)

query = meta.Session.query(User).filter_by(
    firstname.like(search_var1),
    lastname.like(search_var2)
    )

Цепной фильтр (и оператор)

query = meta.Session.query(User).\
    filter_by(firstname.like(search_var1)).\
    filter_by(lastname.like(search_var2))

Использование or_ () или and_ (), а не ()

from sqlalchemy import and_, or_, not_

query = meta.Session.query(User).filter(
    and_(
        User.firstname.like(search_var1),
        User.lastname.like(search_var2)
    )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...