programing

sqlalchemy 여러 열 필터링

minecode 2021. 1. 17. 10:47
반응형

sqlalchemy 여러 열 필터링


두 개의 열을 결합하고 필터를 적용하려면 어떻게합니까? 예를 들어 "이름"과 "성"열을 동시에 검색하려고합니다. 한 열만 검색하는 경우 다음과 같이합니다.

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

간단히 filter여러 번 호출 수 있습니다 .

query = meta.Session.query(User).filter(User.firstname.like(searchVar1)). \
                                 filter(User.lastname.like(searchVar2))

SQLAlchemy의 or_함수사용 하여 둘 이상의 열에서 검색 할 수 있습니다 (파이썬의 열과 구별하기 위해 밑줄이 필요합니다 or).

예를 들면 다음과 같습니다.

from sqlalchemy import or_
query = meta.Session.query(User).filter(or_(User.firstname.like(searchVar),
                                            User.lastname.like(searchVar)))

이를 수행하는 방법에는 여러 가지가 있습니다.

사용 filter()( 오퍼레이터)

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)
    )

연결 filter()또는 filter_by()( 연산자)

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

사용 or_(), and_()not()

from sqlalchemy import and_, or_, not_

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

참조 URL : https://stackoverflow.com/questions/3332991/sqlalchemy-filter-multiple-columns

반응형