构建查询:
def search_clmns4filter(self,clmns,tablecls,keyword):
"""get columns that will been used keyword full text search
:input:clmns = ['tit','des']
:output:" [getattr(tablecls, 'tit').like("%" + query + "%"),getattr(tablecls, 'des').like("%" + query + "%")] "
"""
if self.fullsearch_clmns == None:
return ""
else:
out = map(lambda x:getattr(tablecls, x).like("%" + keyword + "%"),self.fullsearch_clmns)
return out
执行查询:
...
keysearchcnd = self.search_clmns4filter(self.fullsearch_clmns,tablecls,keyword)
if bool(keysearchcnd):
if len(keysearchcnd) > 1:
try:
recorders = session.query(tablecls).filter(or_(*keysearchcnd)). \
order_by(tablecls.id.desc()).all()
except:
session.rollback()
...