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
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()
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()
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
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
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
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
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
def get_constructor_results_by_race(race_id): return session.query(ConstructorResult).filter( ConstructorResult.raceId == race_id).order_by( ConstructorResult.points.desc()).all()
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
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()
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()
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()
def get_race_by_id(id): return session.query(Race).filter(Race.raceId == id).one_or_none()
def get_drivers(): return session.query(Driver).order_by(Driver.dob.desc()).all()
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()
def get_all_races(): return session.query(Race).options(joinedload('circuit')).all()
def get_all_driver_results(driver_id): return session.query(Result).join(Driver).filter( Driver.driverId == driver_id).all()
def get_all_teams(): return session.query(Constructor).all()
def get_laptimes(race_id): laptimes = session.query(LapTime).filter(LapTime.raceId == race_id).order_by(LapTime.lap, LapTime.time).all() return laptimes
def get_race(year, round): return session.query(Race).filter(Race.year == year, Race.round == round).options(joinedload('circuit')).one_or_none()
def get_driver(id): return session.query(Driver).filter(Driver.driverId == id).one_or_none()
def get_races_in_year(year): return session.query(Race).filter(Race.year == year).order_by(Race.round).all()
def get_team_by_id(id): return session.query(Constructor).filter( Constructor.constructorId == id).one_or_none()
def get_last_race(): subq = session.query(func.max(Race.raceId)) return session.query(Race).filter(Race.raceId == subq).one_or_none()
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
def get_individual_standing(standing_id): return session.query(DriverStanding).filter( DriverStanding.driverStandingsId == standing_id).one_or_none()
def get_all_driver_poles(driver_id): return session.query(Qualifying).join(Driver).filter( Driver.driverId == driver_id, Qualifying.position == 1).all()
def get_driver_by_code(code): return session.query(Driver).filter(Driver.code == code).all()