2009-06-16 4 views
0

SQLObjectにLIKEのSQL文を実行する方法はありますか?SQLObjectでSQL LIKEを実行する

この1つは動作しますが、それはやや醜いです:

fields = Foo.select("field LIKE '%%%s%%'" % bar) 

答えて

0

SqlBuilderは(また、適切なLIKE句を構築startswithendswithもの)LIKE機能を持っています。

1

sqlobject.sqlbuilderには、LIKEと呼ばれる文書化されていないクラスがあり、他のクエリ要素の中で使用できます。例えば

from sqlobject.sqlbuilder import LIKE 

class Customer(SQLObject): 
    name = StringCol() 
    ... 

# this search is case-dependent 
rows = Customer.select(LIKE(Customer.q.name, "%Smith%")) 

class ILIKE(LIKE): 
    op = 'ILIKE' 

# this search is case-independent, works on PostgreSQL, not sure about others 
rows = Customer.select(ILIKE(Customer.q.name, '%smith%'))