LIKE
in SQLObjectを使用して SQL ステートメントを実行するきれいな方法はありますか?
これは機能しますが、やや醜いです:
fields = Foo.select("field LIKE '%%%s%%'" % bar)
他のクエリ要素間で使用できる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%'))
SqlBuilderにはLIKE
関数 (およびstartswith
適切endswith
なLIKE
句を作成する関数) があります。