예제 #1
0
    def runTest(self):
        database_session = MlbDatabase(DB_PATH).open_session()

        entry = PostgameHitterGameEntry()
        entry.rotowire_id = '10972'

        database_session.close()
예제 #2
0
    def setUp(self):
        add_pitcher_entry()
        database_session = MlbDatabase(DB_PATH).open_session()
        entry = GameEntry(date.today(), date.today().ctime(), CommitNewPregamePitcherTest.HOME_TEAM, 'MIA')
        database_session.add(entry)
        database_session.commit()

        database_session.close()
예제 #3
0
def mine_pregame_stats():
    """ Mine the hitter/pitcher stats and predict the outcomes and commit to the database session
    :param mlb_database: MlbDatabase object
    """
    database_session = MlbDatabase().open_session()
    games = get_game_lineups(database_session)
    update_ids(games, database_session)
    get_pregame_hitting_stats(games)
    get_pregame_pitching_stats(games)
    database_session.close()
예제 #4
0
def add_pitcher_entries():
    database_session = MlbDatabase(DB_PATH).open_session()

    starting_pitcher_1 = PitcherEntry('Andrew', 'Cashner', '10468')
    database_session.add(starting_pitcher_1)
    starting_pitcher_2 = PitcherEntry('Jeff', 'Samardzija', '9374')
    database_session.add(starting_pitcher_2)

    database_session.commit()
    database_session.close()
예제 #5
0
    def runTest(self):
        database_session = MlbDatabase(DB_PATH).open_session()

        entry = PostgamePitcherGameEntry()
        entry.rotowire_id = '10468'
        entry.game_date = date.today()
        entry.game_time = date.today().ctime()
        entry.home_team = CommitNewPregamePitcherTest.HOME_TEAM

        database_session.close()
예제 #6
0
    def setUp(self):
        add_hitter_entry()
        add_pitcher_entry()
        database_session = MlbDatabase(DB_PATH).open_session()

        entry = GameEntry(date.today(), date.today().ctime(), 'SD', 'BOS')
        database_session.add(entry)
        database_session.commit()

        database_session.close()
예제 #7
0
    def runTest(self):
        database_session = MlbDatabase(DB_PATH).open_session()

        starting_pitcher_1 = PitcherEntry('Andrew', 'Cashner', '10468')
        starting_pitcher_1.baseball_reference_id = 'cashnan01'
        starting_pitcher_1.home_team = 'MIA'
        starting_pitcher_1.pitching_hand = 'R'

        database_session.add(starting_pitcher_1)
        database_session.commit()

        database_session.close()
예제 #8
0
def add_hitter_entry():
    database_session = MlbDatabase(DB_PATH).open_session()

    hitter = HitterEntry('Wil', 'Myers', '10972')
    hitter.baseball_reference_id = 'myerswi01'
    hitter.team = 'SD'
    hitter.batting_hand = 'R'

    database_session.add(hitter)
    database_session.commit()

    database_session.close()
예제 #9
0
    def runTest(self):
        database_session = MlbDatabase(DB_PATH).open_session()

        entry = PregameHitterGameEntry()
        entry.rotowire_id = '10972'
        entry.game_date = date.today()
        entry.game_time = date.today().ctime()
        entry.home_team = CommitNewPregameHitterTest.HOME_TEAM

        database_session.add(entry)
        database_session.commit()

        database_session.close()
예제 #10
0
    def get_opponent_vector(self):

        database_session = MlbDatabase().open_session()
        # Get the hitters he is facing as well
        hitter_postgame_entries = database_session.query(
            PregameHitterGameEntry).filter(
                PregameHitterGameEntry.game_date == self.game_date,
                PregameHitterGameEntry.game_time == self.game_time,
                PregameHitterGameEntry.home_team == self.home_team,
                PregameHitterGameEntry.is_home_team != self.is_home_team)

        hitter_array = np.array(np.zeros(31))
        for hitter_entry in hitter_postgame_entries:
            hitter_array += hitter_entry.to_input_vector_raw()

        database_session.close()

        return PregameHitterGameEntry.avg_input_vector(hitter_array)
예제 #11
0
def get_pregame_hitting_stats_wrapper(game):
    database_session = MlbDatabase().open_session()
    for current_hitter in game.away_lineup:
        pitcher_hand = game.home_pitcher.hand
        print "Mining %s." % current_hitter.name
        try:
            pregame_hitter_entry = get_hitter_stats(
                current_hitter.rotowire_id, game.home_pitcher.rotowire_id,
                current_hitter.team, pitcher_hand, database_session)
            pregame_hitter_entry.game_date = date.today()
            pregame_hitter_entry.opposing_team = game.home_pitcher.team
            predict_draftkings_points(pregame_hitter_entry)
            database_session.add(pregame_hitter_entry)
            database_session.commit()
        except HitterNotFound as e:
            print e
        except IntegrityError:
            print "Attempt to duplicate hitter entry: %s %s %s" % (
                current_hitter.name, pregame_hitter_entry.team,
                pregame_hitter_entry.opposing_team)
            database_session.rollback()

    for current_hitter in game.home_lineup:
        pitcher_hand = game.away_pitcher.hand
        print "Mining %s." % current_hitter.name
        try:
            pregame_hitter_entry = get_hitter_stats(
                current_hitter.rotowire_id, game.away_pitcher.rotowire_id,
                current_hitter.team, pitcher_hand, database_session)
            pregame_hitter_entry.game_date = date.today()
            pregame_hitter_entry.opposing_team = game.away_pitcher.team
            predict_draftkings_points(pregame_hitter_entry)
            database_session.add(pregame_hitter_entry)
            database_session.commit()
        except HitterNotFound as e:
            print e
        except IntegrityError:
            print "Attempt to duplicate hitter entry: %s %s %s" % (
                current_hitter.name, pregame_hitter_entry.team,
                pregame_hitter_entry.opposing_team)
            database_session.rollback()

    database_session.close()
예제 #12
0
def get_pregame_pitching_stats_wrapper(game):
    database_session = MlbDatabase().open_session()

    current_pitcher = game.away_pitcher
    print "Mining %s." % current_pitcher.name
    try:
        pregame_pitcher_entry = get_pitcher_stats(current_pitcher.rotowire_id,
                                                  current_pitcher.team,
                                                  game.home_pitcher.team,
                                                  database_session)

        predict_draftkings_points(pregame_pitcher_entry)
        database_session.add(pregame_pitcher_entry)
        database_session.commit()
    except IntegrityError:
        print "Attempt to duplicate pitcher entry: %s %s %s" % (
            current_pitcher.name, pregame_pitcher_entry.team,
            pregame_pitcher_entry.opposing_team)
        database_session.rollback()
    except PitcherNotFound as e:
        print e

    current_pitcher = game.home_pitcher
    print "Mining %s." % current_pitcher.name
    try:
        pregame_pitcher_entry = get_pitcher_stats(current_pitcher.rotowire_id,
                                                  current_pitcher.team,
                                                  game.away_pitcher.team,
                                                  database_session)

        predict_draftkings_points(pregame_pitcher_entry)
        database_session.add(pregame_pitcher_entry)
        database_session.commit()
    except IntegrityError:
        print "Attempt to duplicate pitcher entry: %s %s %s" % (
            current_pitcher.name, pregame_pitcher_entry.team,
            pregame_pitcher_entry.opposing_team)
        database_session.rollback()
    except PitcherNotFound as e:
        print e

    database_session.close()
예제 #13
0
    def runTest(self):
        database_session = MlbDatabase(DB_PATH).open_session()

        lineup = LineupEntry()
        lineup.starting_pitcher_1 = '10468'
        lineup.starting_pitcher_2 = '9374'
        lineup.catcher = '8047'
        lineup.first_baseman = '8620'
        lineup.second_baseman = '6508'
        lineup.third_baseman = '9862'
        lineup.shortstop = '11437'
        lineup.outfielder_1 = '7140'
        lineup.outfielder_2 = '13190'
        lineup.outfielder_3 = '7618'
        lineup.game_date = date.today()
        lineup.game_time = date.today().ctime()

        database_session.add(lineup)
        database_session.commit()

        database_session.close()
예제 #14
0
def add_hitter_entries():
    """ Just add some hitter entries to the test database to satisfy foreign key constraints
    """
    database_session = MlbDatabase(DB_PATH).open_session()

    catcher = HitterEntry('Russell', 'Martin', '8047')
    database_session.add(catcher)
    first_baseman = HitterEntry('Ryan', 'Zimmerman', '8620')
    database_session.add(first_baseman)
    second_baseman = HitterEntry('Chase', 'Utley', '6508')
    database_session.add(second_baseman)
    third_baseman = HitterEntry('Josh', 'Donaldson', '9862')
    database_session.add(third_baseman)
    shortstop = HitterEntry('Manny', 'Machado', '11437')
    database_session.add(shortstop)
    outfielder_1 = HitterEntry('Melvin', 'Upton Jr.', '7140')
    database_session.add(outfielder_1)
    outfielder_2 = HitterEntry('Jose', 'Peraza', '13190')
    database_session.add(outfielder_2)
    outfielder_3 = HitterEntry('Nick', 'Markakis', '7618')
    database_session.add(outfielder_3)

    database_session.commit()
    database_session.close()
예제 #15
0
from mine.beautiful_soup_helper import get_soup_from_url
from datetime import date, timedelta
from sqlalchemy.exc import IntegrityError
from sqlalchemy.orm.exc import FlushError
import datetime
from sql.umpire import UmpireCareerEntry
from mine.baseball_reference import get_team_info
from mine.team_dict import *
import re
from bs4 import Comment
from sql.team_park import ParkEntry
from sqlalchemy import or_, and_

base_url = "http://gd2.mlb.com/components/game/mlb/year_2017/month_"

database_session = MlbDatabase().open_session()


def get_game_day_urls(game_date):
    game_urls = list()
    day_url = base_url + '%02d' % game_date.month + "/" + "day_" + '%02d' % game_date.day
    soup = get_soup_from_url(day_url)
    game_links = soup.findAll("a")
    for game_link in game_links:
        game_string = str(game_link.text).strip()
        if game_string.startswith("gid"):
            game_string = day_url + "/" + game_string + "linescore.xml"
            game_urls.append(game_string)
            print game_string

    return game_urls
예제 #16
0
 def __init__(self):
     self._database_session = MlbDatabase().open_session()
     self._decision_tree = None
예제 #17
0
 def __init__(self):
     self._decision_tree = DecisionTreeRegressor()
     self._database_session = MlbDatabase().open_session()
예제 #18
0
from sql.mlb_database import MlbDatabase
from email_service import send_email
from mine.stat_miner import LineupMiner

try:
    mlbDatabase = MlbDatabase()
    lineup_miner = LineupMiner(lineup=None,
                               opposing_pitcher=None,
                               game_date=None,
                               game_time=None,
                               db_path=None,
                               is_home=False)
    lineup_miner.mine_yesterdays_results()
    send_email("Mine postgame completed.")
except Exception as e:
    print e
    send_email("The predictor generated an exception: {0}".format(e))