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
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)