sqlalchemy 构建动态多条件全文搜索样例

sqlalchemy 构建动态多条件全文搜索样例

构建查询:

    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()
...
设置