Esempio n. 1
0
def get_cats_to_web(attr, limit, offset, direction):
    """
    Возвращает список словарей с результатом запроса к таблице cats с параметрами
    :param attr: столбец сортировки, по  умолчанию сортировка не производится
    :param limit: количество выводимых строк, по умолчанию - все
    :param offset: номер строки, с которой начинается отсчет
    :param direction: направление сортировки, по умолчанию - по возврастанию
    :return: [{'name': ..., 'color': ..., 'tail_length': ..., 'whiskers_length': ...}]
    """
    session = create_session()
    if direction == 'desc':
        query = session.query(Cat).order_by(getattr(Cat, attr).desc() if attr else None)\
            .offset(offset)\
            .limit(limit)
    else:
        query = session.query(Cat).order_by(getattr(Cat, attr) if attr else None)\
            .offset(offset)\
            .limit(limit)
    cats = []
    for i in query:
        cats.append({
            'name': i.name,
            'color': i.color,
            'tail_length': i.tail_length,
            'whiskers_length': i.whiskers_length
        })
    return cats
Esempio n. 2
0
def compute_whiskers_length_mean():
    """
    Добавляет или обновляет значение whiskers_length_mean в таблице cats_stat
    """
    session = create_session()
    avg = round(session.query(sqla.func.avg(Cat.whiskers_length)).scalar(), 1)
    update_statistics('whiskers_length_mean', avg)
Esempio n. 3
0
def get_names_list():
    """
    Возвращает список имен из таблицы cats
    """
    session = create_session()
    query = session.query(Cat.name)
    return [i.name for i in query]
Esempio n. 4
0
def compute_whiskers_length_mode():
    """
    Добавляет или обновляет значение моды whiskers_length_mode в таблице cats_stat
    """
    session = create_session()
    query = session.query(Cat.whiskers_length)
    whiskers_length_list = [x.whiskers_length for x in query]
    mode = find_list_mode(whiskers_length_list)
    update_statistics('whiskers_length_mode', mode)
Esempio n. 5
0
def compute_whiskers_length_median():
    """
    Добавляет или обновляет значение медианы whiskers_length_median в таблице cats_stat
    """
    session = create_session()
    query = session.query(Cat.whiskers_length).order_by(Cat.whiskers_length)
    query_list = [x.whiskers_length for x in query]
    median = find_list_median(query_list)
    update_statistics('whiskers_length_median', median)
Esempio n. 6
0
def get_colors(width=20):
    """
    Выводит на экран содержимое таблицы cat_colors_info с сортировкой по убыванию
    :param width: ширина колонки в символах, по умолчанию 20
    """
    session = create_session()
    query = session.query(Color).order_by(Color.count.desc())
    print(*[x.ljust(width, ' ') for x in Color.__table__.columns.keys()])
    for i in query:
        print(*[str(x).ljust(width, ' ') for x in (i.color, i.count)])
Esempio n. 7
0
def update_statistics(column_name, value):
    session = create_session()
    first_line = session.query(Statistics).first()
    new_data = Statistics()
    setattr(new_data, column_name, value)
    if first_line is None:
        session.add(new_data)
    else:
        session.query(Statistics).update({column_name: value})
    session.commit()
Esempio n. 8
0
def add_cat(name, color, tail_length, whiskers_length):
    """
    Добавляет кота в таблицу cats
    """
    session = create_session()
    session.add(
        Cat(name=name,
            color=color,
            tail_length=tail_length,
            whiskers_length=whiskers_length))
    session.commit()
Esempio n. 9
0
def get_stat(width=22):
    """
    Выводит на экран содержимое таблицы cats_stat
    :param width: ширина колонки в символах, по умолчанию 22
    """
    session = create_session()
    query = session.query(Statistics)
    print(*[x.ljust(width, ' ') for x in Statistics.__table__.columns.keys()])
    for i in query:
        print(*[
            str(x).ljust(width, ' ')
            for x in (i.tail_length_mean, i.tail_length_median,
                      i.tail_length_mode, i.whiskers_length_mean,
                      i.whiskers_length_median, i.whiskers_length_mode)
        ])
Esempio n. 10
0
def compute_colors(color_list):
    """
    Подсчитывает количество котов каждого цвета
    Создает строку с цветом или обновляет значение, если оно было
    :param color_list: список цветов
    """
    session = create_session()
    for color in color_list:
        count = session.query(Cat.color).filter(Cat.color == color).count()
        color_query = session.query(Color).filter(
            Color.color == color).scalar()
        if color_query is None:
            session.add(Color(color=color, count=count))
        else:
            session.query(Color).filter(Color.color == color).update(
                {Color.count: count})
        session.commit()
Esempio n. 11
0
def get_cats(number_of_lines=None, width=20):
    """
    Выводит на экран содержимое таблыцы cats
    :param number_of_lines: количество строк, выводимых на экран
                            если не указано, выводятся все строки
    :param width: ширина колонки в символах, по умолчанию 20
    """
    session = create_session()
    print(*[x.ljust(width, ' ') for x in Cat.__table__.columns.keys()])
    if number_of_lines is None:
        query = session.query(Cat)
        for i in query:
            print(*[
                str(x).ljust(width, ' ')
                for x in (i.name, i.color, i.tail_length, i.whiskers_length)
            ])
    else:
        query = session.query(Cat).limit(number_of_lines)
        for i in query:
            print(*[
                str(x).ljust(width, ' ')
                for x in (i.name, i.color, i.tail_length, i.whiskers_length)
            ])
Esempio n. 12
0
def get_number_of_lines():
    """
    Возвращает количество строк в таблице cats
    """
    session = create_session()
    return session.query(Cat).count()