2013-08-23 26 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有些關係與or運營商不兼容。

任何提示?

感謝

+0

可能的重複http://stackoverflow.com/questions/7942547/using-or-in-sqlalchemy? –

回答

1

你不能用這種方式與SQLAlchemy的使用or。它有它自己的or_功能:

query.filter(or_(expr1, expr2)) 

在具體:

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

這同樣適用於and_not_in_(甚至更多)真。我認爲你可以做一些像expr1 | expr2但我不確定。