2014-07-18 113 views
1

我正在使用sqlalchemy從表中獲取數據。 現在從表audit_trail_table中獲取所有記錄正在按預期工作。如何在sqlalchemy中執行LIKE查詢?

select_stmt = select([self.audit_trail_table]).where(self.audit_trail_table.c.id == int(id)) 
row = conn.execute(select_stmt).fetchone() 

現在我希望在多個列執行LIKE查詢如下:

filter_query = #(some value which will work as a filter_query while fetching)records 
filter_stmt = select([self.audit_trail_table]).where(self.audit_trail_table.c.first_name like '%' + filter_query + '%' or self.audit_trail_table.c.last_name like '%') 

但它在LIKE給出了一個錯誤。我怎樣才能做到這一點?

回答

1

請使用類似的操作

select([self.audit_trail_table]).where(self.audit_trail_table.c.first_name.like('%' + filter_query + '%') or self.audit_trail_table.c.last_name.like('%abc%')) 

http://docs.sqlalchemy.org/en/rel_0_9/core/sqlelement.html#sqlalchemy.sql.operators.ColumnOperators.like

+0

它正在爲一個單一的'像()'。但是,當我將兩個'like()'函數與'or'結合爲一個錯誤時:'TypeError:此子句的布爾值未定義' – Sangram

+0

必須使用django中的OR運算符而不是python中的OR運算符 – Nilesh

+1

是。我使用sqlalchemy中的'或_()'來代替。非常感謝你的幫助 ! – Sangram