Ejemplo n.º 1
0
 def findByFieldsValues(cls,fields,values,session=None,onlyOne=True,notNoneFields=None,orderByFields=None,ascending=True,operators=None,groupByFields=None,selectFieldsAndFunctions=None,nestedOperators=None,returnDataframe=False,distinct=False,printQuery=False):
     if operators is None:
         operators = [SQLOperator.equalOperator] * 1000
     close = False
     if session is None:
         session = cls.database.Session()        
         close = True  
     o = None
     if selectFieldsAndFunctions is None:
         o = session.query(cls)
     else:
         o = Query(selectFieldsAndFunctions, session=session)
     for field,value,operator in zip(fields,values,operators):
         operator.field = field
         operator.value = value
         o = operator.filter(o)
     if nestedOperators is not None:
         for operator in nestedOperators:
             o = operator.filter(o)
     if notNoneFields is not None:
         for f in notNoneFields:
             o = o.filter(f != None)
     if groupByFields is not None:
         for  f in groupByFields:
             o = o.group_by(f)
     if orderByFields is not None:
         for  f in orderByFields:
             if ascending:
                 o = o.order_by(f)
             else:
                 o = o.order_by(f.desc())
     if printQuery:
         print(o)
     if onlyOne:
         o = o.first()
     else:
         if distinct:
             o = o.distinct()
         if returnDataframe:
             o = cls.queryToDataframe(o)
         else:
             o = o.all()
     if close:
         session.close()
     return o