2013-08-23 2 views
1

이름과 성 필드 모두를 일치시켜 사용자를 검색하려고합니다.SQLAlchemy 필터 식에서 "ilike 또는 ilike"를 수행 할 때 TypeError

일반 SQL에서 내가 할 것 :

SELECT * FROM user 
WHERE (first_name ILIKE 'pattern') OR (last_name LIKE 'pattern'); 

내가하려고 해요을 SQLAlchemy의와 다음

User.query().filter(User.last_name.ilike(pattern) \ 
        or User.first_name.ilike(pattern)) 

나는 다음과 같은 오류 얻을 : 같은 맥락에서 TypeError: Boolean value of this clause is not defined

을, 두 개의 정확한 매치 (==)를 or으로 조합하면 내 이슈가 ilike과 관련이 있다는 것을 추측 할 수 있습니다. ow는 or 연산자와 호환되지 않습니다.

힌트가 있습니까?

감사

+0

http://stackoverflow.com/questions/7942547/using-or-in-sqlalchemy의 가능한 복제본은 무엇입니까? –

답변

1

당신은 SQLAlchemy의이 방법으로 or을 사용할 수 없습니다.

query.filter(or_(expr1, expr2)) 

구체적인에서 :

User.query().filter(or_(User.last_name.ilike(pattern), 
         User.first_name.ilike(pattern))) 

같은이 and_, not_in_ (그리고 아마도 이상)도 마찬가지입니다 그것은 자신의 or_ 기능을 가지고 있습니다. I 을 생각하면 expr1 | expr2과 같은 것을 할 수 있지만 확실하지 않습니다.

관련 문제