Ejemplo n.º 1
0
    def __init__(self, database_uri, ingest_spring_training=False, log_level="INFO"):
        """Constructor

        Initializes database connection and session
        Creates database tables if they do not already exist
        Sets up logging

        Parameters
        ----------
        database_uri : str
            The URI for the database.
            Examples: "sqlite:///gameday.db"  (sqlite)
                      "postgresql+psycopg2://user:passwd@localhost/gameday"  (Postgres via psycopg2)

            See SQLAlchemy's documentation for valid database URIs.

        ingest_spring_training : bool
            Whether to ingest spring training games. [Default: False]

        log_level : str
            The logging level. Must be one of NOTSET, DEBUG, INFO, WARN, ERROR, CRITICAL [Default: "INFO"]
        """
        util.set_logging_level(log_level)

        engine = db_connect(database_uri)
        create_db_tables(engine)
        self.Session = sessionmaker(bind=engine)
        logger.info("Initialized GameDayClient using '{}'".format(database_uri))

        self.database_uri = database_uri
        self.ingest_spring_training = ingest_spring_training
        self.player_ids = set()  # Player IDs that have already been inserted into the database
        self.gameday_ids = set()  # Game IDs that have already been inserted into the database

        self.update_inserted_data()  # Update the set of players and games that are already inserted
Ejemplo n.º 2
0
def test():
    """Test database functionality """

    engine = db_connect(config.DATABASE_URI)
    create_db_tables(engine)
    sm = sessionmaker(bind=engine)
    session = sm()

    player = gen_fake_player_data()
    game = gen_fake_game_data()
    atbat = gen_fake_atbat_data()
    pitch = gen_fake_pitch_data()

    atbat.pitches.append(pitch)
    game.at_bats.append(atbat)
    # game.pitches.append(pitch)

    try:
        session.add(player)
        session.commit()
        print("Committed player: {}".format(str(player)))

    except IntegrityError:
        session.rollback()
        msg = "IntegrityError when inserting player: {}".format(str(player))
        print(msg)

    except Exception as ex:
        session.rollback()
        msg = "Exception when inserting player"
        print(msg)
        print(ex)

    try:
        session.add(game)
        session.commit()
        print("Committed game: {}".format(str(game)))

    except Exception as ex:
        session.rollback()
        msg = "Exception when inserting game"
        print(msg)
        print(ex)