예제 #1
0
 def sum_by_datetime_between(self, column, datetime_column, start, end):
     if not column:
         return
     if not datetime_column:
         return
     with query_session() as session:
         do = session.query(self.cls)
         do = do.filter(
             getattr(self.cls, datetime_column).between(start, end))
         num = do.with_entities(func.sum(getattr(self.cls,
                                                 column))).scalar()
         return num
예제 #2
0
 def count_by_datetime_between(self,
                               datetime_column,
                               start,
                               end,
                               keywords=None):
     if not datetime_column:
         return
     with query_session() as session:
         do = session.query(self.cls)
         do = do.filter(
             getattr(self.cls, datetime_column).between(start, end))
         do = self.do_keywords(keywords, do)
         num = do.with_entities(func.count(self.cls.id)).scalar()
         return num
예제 #3
0
    def find_items_by_datetime_between(self,
                                       datetime_column,
                                       start,
                                       end,
                                       limit=None,
                                       offset=None,
                                       keywords=None):
        if not datetime_column:
            return []

        with query_session() as session:
            do = session.query(self.cls)
            do = do.filter(
                getattr(self.cls,
                        datetime_column).between(start, end)).order_by(
                            desc(getattr(self.cls, datetime_column)))
            do = self.do_keywords(keywords, do)
            result_set = do.limit(limit).offset(offset).all()
            return load_as_dicts(result_set)
예제 #4
0
    def find_items_by_values(self,
                             values,
                             values_column,
                             limit=None,
                             offset=None,
                             keywords=None):
        if not values:
            return []
        if not values_column:
            return []
        if not isiterable(values):
            values = clist(values)

        with query_session() as session:
            do = session.query(self.cls)
            do = self.do_values(values, values_column, do)
            do = self.do_keywords(keywords, do)
            do = self.do_orders(self.order_by_columns, do)
            result_set = do.limit(limit).offset(offset).all()
            return load_as_dicts(result_set)
예제 #5
0
 def count_items_by_values_and_datetime_between(self,
                                                values,
                                                values_column,
                                                datetime_column,
                                                start,
                                                end,
                                                keywords=None):
     if not values:
         return
     if not values_column:
         return
     if not datetime_column:
         return
     if not isiterable(values):
         values = clist(values)
     with query_session() as session:
         do = session.query(self.cls)
         do = do.filter(
             getattr(self.cls, datetime_column).between(start, end))
         do = self.do_values(values, values_column, do)
         do = self.do_keywords(keywords, do)
         num = do.with_entities(func.count(self.cls.id)).scalar()
         return num
예제 #6
0
 def count(self, keywords=None):
     with query_session() as session:
         do = session.query(self.cls)
         do = self.do_keywords(keywords, do)
         num = do.with_entities(func.count(self.cls.id)).scalar()
         return num
예제 #7
0
 def load(self, id):
     with query_session() as session:
         result = session.query(self.cls).get(id)
         if result:
             return result.to_dict()