from  flask import  g
from  sqlalchemy import  asc,  descclass  QueryWrapperBuilder : conditions =  { } order_by_info =  { } def  __new__ ( cls,  * args,  ** kwargs) : obj =  super ( QueryWrapperBuilder,  cls) . __new__( cls) return  objdef  __init__ ( self,  obj) : self. obj =  objself. conditions =  { } self. order_by_info =  { } @classmethod def  builder ( cls,  obj= None ) : """:param obj: 数据库模型类:return:""" return  cls( obj) def  is_null ( self,  field) : self. conditions[ field. key]  =  None  ==  fieldreturn  selfdef  is_not_null ( self,  field) : self. conditions[ field. key]  =  None  !=  fieldreturn  selfdef  eq ( self,  field,  value) : if  value: self. conditions[ field. key]  =  field ==  valuereturn  selfdef  gt ( self,  field,  value) : if  value: self. conditions[ field. key]  =  field >  valuereturn  selfdef  gte ( self,  field,  value) : if  value: self. conditions[ field. key]  =  field >=  valuereturn  selfdef  lt ( self,  field,  value) : if  value: self. conditions[ field. key]  =  field <  valuereturn  selfdef  lte ( self,  field,  value) : if  value: self. conditions[ field. key]  =  field <=  valuereturn  selfdef  between ( self,  field,  value) : if  value and  isinstance ( value,  list ) : self. conditions[ field. key]  =  field. between( value[ 0 ] ,  value[ 1 ] ) return  selfdef  in_ ( self,  field,  value) : if  value and  isinstance ( value,  list ) : self. conditions[ field. key]  =  field. in_( value) return  selfdef  like ( self,  field,  value) : if  value: self. conditions[ field. key]  =  field. like( f'% { value} %' ) return  selfdef  order_by_desc ( self,  * fields) : if  fields: for  field in  fields: self. order_by_info[ field. key]  =  desc( field) return  selfdef  order_by_asc ( self,  * fields) : if  fields: for  field in  fields: self. order_by_info[ field. key]  =  asc( field) return  selfdef  filter ( self) : return  [ v for  k,  v in  self. conditions. items( ) ] def  order_by_filter ( self) : return  [ v for  k,  v in  self. order_by_info. items( ) ] def  lambda_query ( self) : return  self