def get_event_odds(db_session, db_event): # Get event info from OddsChecker web site oc = OddsChecker() info = oc.get_racing_info(event.course.lower().replace(' ', '-'), event.date_time.strftime('%H:%M'), 'winner') # Create checkpoint db_checkpoint = Checkpoint(event=event, date_time=dt.datetime.now(), source='OddsChecker') db_session.add(db_checkpoint) for bookie in info['bookies']: db_bookie = db_session.query(Bookie).filter_by( name=bookie.name).one_or_none() if not db_bookie: db_bookie = Bookie(name=bookie.name) db_session.add(db_bookie) db_bookie_event = db_session.query(BookieEvent).filter_by( event=db_event, bookie=db_bookie).one_or_none() if not db_bookie_event: db_bookie_event = BookieEvent(event=db_event, bookie=db_bookie, ew_places=bookie.ew_places or 0, ew_divider=bookie.ew_divider or 1) db_session.add(db_bookie_event) for horse in info['horses']: db_runner = db_session.query(Runner).filter_by( event=db_event, name=horse.name).one_or_none() if not db_runner: db_runner = Runner(event=db_event, name=horse.name) db_session.add(db_runner) for bookie, odds in horse.odds.items(): db_bookie = db_session.query(Bookie).filter_by(name=bookie).one() db_odds = Odds(checkpoint=db_checkpoint, runner=db_runner, bookie=db_bookie, win=odds, place=0) db_session.add(db_odds) db_session.commit() db_event.last_checkpoint = db_checkpoint db_session.commit()
def fixture_stats(): """ Calculate the predicted home and away goals for a fixture and store those values in the database. """ fixtures = db.session.query(Fixture).filter_by(completed=False) for fixture in fixtures: league_stats = db.session.query(League_Stats).filter_by( league_id=fixture.league_id).one() home_stats = db.session.query(Team_Stats).filter_by( team_id=fixture.home_team_id).one() away_stats = db.session.query(Team_Stats).filter_by( team_id=fixture.away_team_id).one() home_goals = (home_stats.home_attack_strength) * ( away_stats.away_defense_strength) * (league_stats.avg_home_goals) away_goals = (away_stats.away_attack_strength) * ( home_stats.home_defense_strength) * (league_stats.avg_away_goals) prediction = db.session.query(Prediction).filter_by( fixture_id=fixture.id).first() if not prediction: prediction = Prediction(fixture) prediction.home_goals = home_goals prediction.away_goals = away_goals prediction = _fixture_probabilities(fixture, prediction) odds = db.session.query(Odds).filter_by(fixture_id=fixture.id).first() if not odds: odds = Odds(fixture) db.session.commit()
# This will store all the games we create games_added = [] odds_added = [] pull_id = arrow.now().timestamp for event in events: game_id = event.rundown_id try: game = Games.query.get(game_id) except Exception: print(f'game not found:{game_id}') continue if not game: print(f'game not found:{game_id}') continue odds = Odds() odds.pull_id = pull_id odds.game_id = event.rundown_id odds.moneyline_id = event.moneyline_id odds.moneyline_away = event.moneyline_odds_away odds.moneyline_home = event.moneyline_odds_home odds_added.append(odds) db.session.add_all(games_added) db.session.add_all(odds_added) db.session.commit()