programing

SQL“LIKE”문에 해당하는 SQLAlchemy

nasanasas 2020. 11. 4. 08:04
반응형

SQL“LIKE”문에 해당하는 SQLAlchemy


태그 열에는 '사과 바나나 오렌지'및 '딸기 바나나 레몬'과 같은 값이 있습니다. SQLAlchemy에 해당하는 문을 찾고 싶습니다.

SELECT * FROM table WHERE tags LIKE "%banana%";

Class.query.filter()이 작업을 수행 하려면 무엇을 전달해야 합니까?


각 열에는 like()에서 사용할 수있는 메서드가 있습니다 query.filter(). 검색 문자열이 주어지면 %양쪽에 문자를 추가하여 양방향으로 하위 문자열로 검색합니다.

tag = request.form["tag"]
search = "%{}%".format(tag)
posts = Post.query.filter(Post.tags.like(search)).all()

위의 답변에 추가하여 솔루션을 찾는 사람은 '좋아요'대신 '일치'연산자를 사용해 볼 수도 있습니다. 편향되고 싶지는 않지만 Postgresql에서 완벽하게 작동했습니다.

Note.query.filter(Note.message.match("%somestr%")).all()

CONTAINSMATCH 와 같은 데이터베이스 함수를 상속합니다 . 그러나 SQLite에서는 사용할 수 없습니다.

자세한 내용은 일반 필터 연산자 로 이동하십시오.


이 코드를 시도

output = dbsession.query(<model_class>).filter(<model_calss>.email.ilike('%' + < email > + '%'))

PostgreSQL like( 위의 수락 된 답변 참조)을 사용하면 사례가 일치하더라도 어떻게 든 작동하지 않았지만 ilike(case i nsensisitive like ) 작동합니다.

참고 URL : https://stackoverflow.com/questions/3325467/sqlalchemy-equivalent-to-sql-like-statement

반응형