[ 데이터베이스 ] - SQLAlchemy "or_"함수
4972 단어 databasesqlalchemysqlpython
쉽게 상품이 진단되고, 한글과 영어로 이름이 된 이 모두 상품 테이블에 각별히 강하게 존재한다.
보통 검색 기능을 중단할 때, sql에서는 like로, orm은 종류가 표시되지만 보통 like나 filter와 같은 경우로 값을 전달해서 추출하곤 합니다.
하지만 내가 오늘 구현하고 입체적인 기능은, 각각의 키워드로 검색을 했을 때
한글 이름과 영어 이름은 모두 해당 키워드가 존재하는지 검색 후 값을 가져오고 경고합니다.
상품 모델을
Product
라 하고, 필드명 name
이라고 분명히 존재하고,상품의 이름으로 검색을 하고 싶다면 우리는 orm을 다음과 같이 반드시 할 수 있습니다.
# "db" is "<class 'sqlalchemy.orm.session.Session'>"
# "name" is variable from Query Parameter
db.query(Product).filter(
Product.name.like(f"%{name}%")
).all()
만약, name이라는 하나의 하찮은 것이 아니라, 한국어와 영어로 이름을 모두 가지고 있는 상품이라면 적은
kor
, eng
로 나뉠 수 있고 한 번에 두 가지의 토끼를 모두 찾고 다음과 같이 sqlalchemy에서 or_ 보시기에는 최대한 사용하기 어렵다.# "db" is "<class 'sqlalchemy.orm.session.Session'>"
# "name" is variable from Query Parameter
from sqlalchemy import or_
db.query(Product).filter(or_(
Product.kor.like(f"%{name}%"),
Product.eng.like(f"%{name}%"),
)).all()
이렇게 학력 "나이키"와 "나이키"라는 이름을 가진 상품이 있을 때,
Query Parameter에 name으로 "이", "나이", "i", "ik", "ike"등등
한글과 영어로 구분지을 필요 없이 검색할 수 있다.
물론 검색 필터로
f"%{name}%"
이라고 주었기 때문에 가능한 것이다.
서비스에 따라%
를 잘 활용하도록 하자.
만일에 일본어의 이름도 추가하고 푼 jp라는 초까지 추가했고, 해당하는 전부까지 조회하고 페이지를 채우거나_드물게
Product.jp.like(f"%{name}%")
연장을 추가한다.# "db" is "<class 'sqlalchemy.orm.session.Session'>"
# "name" is variable from Query Parameter
from sqlalchemy import or_
db.query(Product).filter(or_(
Product.kor.like(f"%{name}%"),
Product.eng.like(f"%{name}%"),
Product.jp.like(f"%{name}%"),
)).all()
Reference
이 문제에 관하여([ 데이터베이스 ] - SQLAlchemy "or_"함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/minholee/-database-sqlalchemy-or-function-3925텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)