Пример #1
0
def get_last_results_of_driver(driver_id, start, stop):
    total_count = session.query(Result).filter(
        Result.driverId == driver_id).count()
    results = session.query(Result).filter(
        Result.driverId == driver_id).options(
            joinedload('status'), joinedload('race')).join(Race).order_by(
                Race.date.desc()).slice(start, stop).all()
    return total_count, results
Пример #2
0
def get_constructor_standings_from_race(race_ids):
    if isinstance(race_ids, int):
        return session.query(ConstructorStanding).filter(
            ConstructorStanding.raceId == race_ids).order_by(
                ConstructorStanding.position).all()
    elif isinstance(race_ids, Iterable):
        return session.query(ConstructorStanding).filter(
            ConstructorStanding.raceId.in_(race_ids)).order_by(
                ConstructorStanding.position).all()
Пример #3
0
def get_driver_standings_by_races(race_ids, driver_id=0):
    if driver_id == 0:
        return session.query(DriverStanding).join(Race).filter(
            DriverStanding.raceId.in_(race_ids)).options(
                joinedload('driver')).order_by(Race.round.desc(),
                                               DriverStanding.position).all()
    else:
        return session.query(DriverStanding).join(Race).filter(
            DriverStanding.raceId.in_(race_ids),
            DriverStanding.driverId == driver_id).options(
                joinedload('driver'),
                joinedload('race')).order_by(Race.date.desc(), ).all()
Пример #4
0
def get_last_race_of_years(year=0):
    if year == 0:
        subq = session.query(Race, func.max(Race.round).over(
            partition_by=Race.year).label('last_round')).subquery()
        res = session.query(subq).filter(
            subq.c.round == subq.c.last_round).all()
    elif year > 1949 and year < 2021:
        res = session.query(Race).filter(
            Race.year == year).order_by(Race.round.desc()).first()
    else:
        res = []
    return res
Пример #5
0
def get_qualifying_results(race_ids):
    if isinstance(race_ids, int):
        qualies = session.query(Qualifying).filter(
            Qualifying.raceId == race_ids).options(
                joinedload('driver'), joinedload('constructor'),
                joinedload('race')).order_by(Qualifying.position).all()
    elif isinstance(race_ids, list):
        qualies = session.query(Qualifying).join(Race).filter(
            Qualifying.raceId.in_(race_ids)).options(
                joinedload('driver'), joinedload('constructor'),
                joinedload('race')).order_by(Race.round.desc(),
                                             Qualifying.position).all()
    else:
        qualies = []
    return qualies
Пример #6
0
def get_team_of_driver_in_races(driver_id, race_ids):
    results = session.query(Result).join(Race).options(
        joinedload('constructor')).filter(
            Result.driverId == driver_id,
            Result.raceId.in_(race_ids)).order_by(Race.date.desc()).all()
    teams = [r.constructor for r in results]
    return teams
Пример #7
0
def get_results_from_races(race_ids, order_by="round"):
    results = []
    if order_by == "round":
        results = session.query(Result).join(Race).filter(
            Result.raceId.in_(race_ids)).options(
                joinedload('driver'), joinedload('constructor'),
                joinedload('race'),
                joinedload('status')).order_by(Race.round.desc(),
                                               Result.positionOrder).all()
    elif order_by == "date":
        results = session.query(Result).join(Race).filter(
            Result.raceId.in_(race_ids)).options(
                joinedload('driver'), joinedload('constructor'),
                joinedload('race'),
                joinedload('status')).order_by(Race.date.desc(),
                                               Result.positionOrder).all()
    return results
Пример #8
0
def get_races_in_circuit(circuit_id:int, start:int, end:int, include_upcoming:bool=True):
    if include_upcoming:
        count = session.query(Race).filter(Race.circuitId == circuit_id).count()
        if end:
            races = session.query(Race).options(joinedload('circuit')).filter(Race.circuitId == circuit_id).order_by(Race.date.desc()).slice(start, end).all()
        else:
            races = session.query(Race).options(joinedload('circuit')).filter(Race.circuitId == circuit_id).order_by(Race.date.desc()).all()
        return count, races
    else:
        now = date.today()
        count = session.query(Race).filter(
            Race.circuitId == circuit_id, Race.date < str(now)).count()
        if end:
            races = session.query(Race).options(joinedload('circuit')).filter(
                Race.circuitId == circuit_id, Race.date < str(now)).order_by(Race.date.desc()).slice(start, end).all()
        else:
            races = session.query(Race).options(joinedload('circuit')).filter(
                Race.circuitId == circuit_id, Race.date < str(now)).order_by(Race.date.desc()).all()
        return count, races
Пример #9
0
def get_constructor_results_by_race(race_id):
    return session.query(ConstructorResult).filter(
        ConstructorResult.raceId == race_id).order_by(
            ConstructorResult.points.desc()).all()
Пример #10
0
def get_team_result(race_id, constructor_id):
    results = session.query(Result).filter(
        Result.raceId == race_id,
        Result.constructorId == constructor_id).options(
            joinedload('driver')).all()
    return results
Пример #11
0
def get_current_driver_standings():
    subq = session.query(func.max(DriverStanding.raceId))
    return session.query(DriverStanding).filter(
        DriverStanding.raceId == subq).options(
            joinedload('race'),
            joinedload('driver')).order_by(DriverStanding.position).all()
Пример #12
0
def get_constructor_standings_from_races_by_team(race_ids, constructor_id):
    return session.query(ConstructorStanding).filter(
        ConstructorStanding.constructorId == constructor_id,
        ConstructorStanding.raceId.in_(race_ids)).options(
            joinedload('race')).all()
Пример #13
0
def get_constructor_standings_from_races(race_ids):
    return session.query(ConstructorStanding).join(Race).filter(
        ConstructorStanding.raceId.in_(race_ids)).options(
            joinedload('constructor')).order_by(
                Race.round.desc(), ConstructorStanding.position).all()
Пример #14
0
def get_race_by_id(id):
    return session.query(Race).filter(Race.raceId == id).one_or_none()
Пример #15
0
def get_drivers():
    return session.query(Driver).order_by(Driver.dob.desc()).all()
Пример #16
0
def get_driver_standings_by_race(race_id):
    return session.query(DriverStanding).filter(
        DriverStanding.raceId == race_id).options(
            joinedload('driver')).order_by(DriverStanding.position).all()
Пример #17
0
def get_all_races():
    return session.query(Race).options(joinedload('circuit')).all()
Пример #18
0
def get_all_driver_results(driver_id):
    return session.query(Result).join(Driver).filter(
        Driver.driverId == driver_id).all()
Пример #19
0
def get_all_teams():
    return session.query(Constructor).all()
Пример #20
0
def get_laptimes(race_id):
    laptimes = session.query(LapTime).filter(LapTime.raceId == race_id).order_by(LapTime.lap, LapTime.time).all()
    return laptimes
Пример #21
0
def get_race(year, round):
    return session.query(Race).filter(Race.year == year, Race.round == round).options(joinedload('circuit')).one_or_none()
Пример #22
0
def get_driver(id):
    return session.query(Driver).filter(Driver.driverId == id).one_or_none()
Пример #23
0
def get_races_in_year(year):
    return session.query(Race).filter(Race.year == year).order_by(Race.round).all()
Пример #24
0
def get_team_by_id(id):
    return session.query(Constructor).filter(
        Constructor.constructorId == id).one_or_none()
Пример #25
0
def get_last_race():
    subq = session.query(func.max(Race.raceId))
    return session.query(Race).filter(Race.raceId == subq).one_or_none()
Пример #26
0
def get_results_from_race(race_id):
    results = session.query(Result).filter(Result.raceId == race_id).options(
        joinedload('driver'), joinedload('constructor'),
        joinedload('status')).order_by(Result.positionOrder).all()
    return results
Пример #27
0
def get_individual_standing(standing_id):
    return session.query(DriverStanding).filter(
        DriverStanding.driverStandingsId == standing_id).one_or_none()
Пример #28
0
def get_all_driver_poles(driver_id):
    return session.query(Qualifying).join(Driver).filter(
        Driver.driverId == driver_id, Qualifying.position == 1).all()
Пример #29
0
def get_driver_by_code(code):
    return session.query(Driver).filter(Driver.code == code).all()