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
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
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)
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)
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
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
def load(self, id): with query_session() as session: result = session.query(self.cls).get(id) if result: return result.to_dict()