示例#1
0
def main():
    name = request_data()
    session = connect_db()

    user = load_user(name, session)
    if not user:
        print(f'Пользователь с именем {name} не найден.')
    else:
        nearest_height(user, session)
        nearest_date(user, session)
示例#2
0
def main():
    """
    Осуществляет взаимодействие с пользователем, обрабатывает пользовательский ввод
    """
    session = users.connect_db()
    id = input("Введи id пользователя для поиска (1,2,..,201..,1003): ")
    user_db, user_height = find(id, session)
    if user_db != -1 and user_height != -1:
        find_athlete_height(user_height, session)
        find_athlete_db(user_db, session)
示例#3
0
def main():
    """
    Осуществляет взаимодействие с пользователем, обрабатывает пользовательский ввод
    """
    session = connect_db()
    user_id = request_data()
    user = session.query(User).filter(User.id == user_id).first()
    if not user:
        print("Такого пользователя не нашлось:(")
    else:
        bd_athlete, bd = nearby_birth(user, session)
        height_athlete, height = nearby_height(user, session)
        print(
            "Ближайший по дате рождения атлет: {}, его дата рождения: {}".format(bd_athlete, bd)
        )
        print(
            "Ближайший по росту атлет: {}, его рост: {}".format(height_athlete, height)
        )
示例#4
0
def main():
    session = users.connect_db()
    user_id = request_data()
    user = session.query(users.User).filter(users.User.id == user_id).first()
    if user:
        nearest_birth_athelete = session.query(Athelete)\
                                 .filter(Athelete.birthdate.isnot(None))\
                                 .order_by(func.abs(func.julianday(Athelete.birthdate) - func.julianday(user.birthdate))).first()
        nearest_height_athelete = session.query(Athelete)\
                                  .filter(Athelete.height.isnot(None))\
                                  .order_by(func.abs(Athelete.height - user.height)).first()
        print(
            f'Ближайший по дате рождения атлет: id: {nearest_birth_athelete.id}, имя: {nearest_birth_athelete.name}, дата рождения: {nearest_birth_athelete.birthdate}'
        )
        print(
            f'Ближайший по росту атлет: id: {nearest_height_athelete.id}, имя: {nearest_height_athelete.name}, рост: {nearest_height_athelete.height}'
        )
    else:
        print('Пользовалель с таким id не найден')
示例#5
0
def find():
    session = connect_db()

    find_id = input("Ввведите идентификатор пользователя: ")
    user = session.query(User).filter(User.id == find_id).first()

    atheletes = session.query(Athelete).filter(Athelete.birthdate).all()
    atheletes_height = session.query(Athelete).filter(Athelete.height).all()

    session.close()

    if user:
        candidate1 = atheletes[0]
        candidate2 = atheletes[1]

        for athelete in atheletes:

            date1 = datetime.strptime(athelete.birthdate, '%Y-%m-%d')
            date2 = datetime.strptime(user.birthdate, '%Y-%m-%d')
            date3 = datetime.strptime(candidate1.birthdate, '%Y-%m-%d')
            diff_athelete = abs(date1 - date2).days
            diff_candidate1 = abs(date3 - date2).days
            if diff_athelete < diff_candidate1:
                candidate2 = candidate1
                candidate1 = athelete

        print("Первый атлет-" + candidate1.name, candidate1.birthdate,
              "\nВторой атлет-" + candidate2.name, candidate2.birthdate)

        candidate_height = atheletes_height[0]
        for ath_height in atheletes_height:
            diff_athelete_height = abs(ath_height.height - user.height)
            diff_candidate_height = abs(candidate_height.height - user.height)
            if diff_athelete_height < diff_candidate_height:
                candidate_height = ath_height
        print(candidate_height.name, candidate_height.height)

    else:
        print("Пользователя с таким идентификатором нет")
示例#6
0
def main():
    session = users.connect_db()
    id = int(input("Введите id пользователя (целое число):"))
    user = users.find_user(id, session)
    if user != None:
        find_athelete(user, session)
import users, find_athlete
from users import connect_db, request_data
from find_athlete import find_similiar

session = connect_db()
mode = input(
    "Выберите режим \n1 - ввести данные нового пользователя\n2 - ближайшего к пользователю атлета\n "
)
if mode == "1":
    user = request_data()
    # добавляем нового пользователя в сессию
    session.add(user)
    session.commit()
    print("Спасибо, данные сохранены!")
elif mode == "2":
    name = input("Введите имя пользователя для поиска: ")
    find_similiar(name, session)
else:
    print("Неверно ввели режим. До свидания!")
def main():
    """
    Осуществляет взаимодействие с пользователем, обрабатывает пользовательский ввод
    """
    session = u.connect_db()
    # просим пользователя выбрать режим
    mode = input(
        "Выбери режим.\n1 - выбрать пользователя по индентификатору\n2 - добавить нового пользователя\n"
    )
    # проверяем режим
    if mode == "1":
        query_user = session.query(u.User)
        # выгружаем список идентификаторов таблицы user
        user_ids = [user.id for user in query_user.all()]

        query_athelete = session.query(Athelete)
        # выгружаем список идентификаторов таблицы athelete
        athelete_ids = [user.id for user in query_athelete.all()]
        # создаем словарь, где ключ - это идентификатор пользователя, а значение - дата рождения
        athelete_birthdates = {
            user.id: user.birthdate
            for user in query_athelete.all()
        }
        # сортируем словарь по значениям(по дате рождения)
        athelete_birthdates = sorted(athelete_birthdates.items(),
                                     key=lambda kv: kv[1])
        # создаем словарь, где ключ - это идентификатор пользователя, а значение - рост
        athelete_heights = {
            user.id: user.height
            for user in query_athelete.all()
        }
        # если рост у атлета не указан - принимаем его рост равным нулевому значению
        for key, value in athelete_heights.items():
            if athelete_heights[key] is None:
                athelete_heights[key] = 0
        # сортируем словарь по значениям(по росту)
        athelete_heights = sorted(athelete_heights.items(),
                                  key=lambda kv: kv[1])

        # запрашиваем идентификатор пользователя
        user_id = int(input("Введите идентификатор пользователя: "))
        if user_id in user_ids:
            # если такой пользователь существует - ищем ему атлета, ближайшего по дате рождения, по росту
            query = session.query(u.User).filter(u.User.id == user_id).first()
            # сохраним дату рождения пользователя
            birthdate = query.birthdate
            # сохраним рост пользователя
            height = query.height
            print("Выбранный пользователь родился {}, его рост: {}\n".format(
                birthdate, height))
            # формируем список дат рождения атлетов, при этом преобразовывая даты в тип datetime
            datalist = []
            for item in athelete_birthdates:
                datalist.append(datetime.strptime(item[1], "%Y-%m-%d"))
            # получаем в переменной res значение ближайшей даты, а в ind - значение, по которму определим идентификатор атлета
            res, ind = nearest(datalist,
                               datetime.strptime(birthdate, "%Y-%m-%d"))
            print("Ближайший атлет по дате рождения:{}, его дата {}".format(
                athelete_birthdates[ind][0], res))

            # далее по аналогии делаем то же самое с ростом
            datalist.clear()
            for item in athelete_heights:
                datalist.append(item[1])
            res, ind = nearest(datalist, height)
            print("Ближайший атлет по росту:{}, его рост {}".format(
                athelete_heights[ind][0], res))
        else:
            print(
                "К сожалению, пользователя с таким идентификатором в базе нет :("
            )
    elif mode == "2":
        # запрашиваем данные пользоватлея
        user = u.request_data()
        # добавляем нового пользователя в сессию
        session.add(user)
        # сохраняем все изменения, накопленные в сессии
        session.commit()
        print("Спасибо, данные сохранены!")
    else:
        print("Некорректный режим:(")