<reponame>BenikaH/sportscraper<filename>sportscraper/scripts/db_connector.py<gh_stars>0
from sqlalchemy import *
import click


def upload_block(data, db_engine, db_tablename):
    data.to_sql(db_tablename, con=db_engine, if_exists='append', index=False, chunksize=10000)


def initdb_statcast(db_username, db_password, db_hostname, db_name, db_tablename):
    db_password = ":" + db_password
    statcast_engine = create_engine("mysql+mysqldb://" + db_username + db_password + "@" + db_hostname + "/" + db_name)
    meta = MetaData(bind=statcast_engine)

    table_statcast = Table(db_tablename, meta,
        Column("id", Integer, primary_key=True, autoincrement=True, nullable=False),
        Column("index", Integer, nullable=True),
        Column("sz_bot", Float, nullable=True),
        Column("inning", Float, nullable=True),
        Column("pitch_number", Float, nullable=True),
        Column("hit_distance_sc", Float, nullable=True),
        Column("plate_z", Float, nullable=True),
        Column("plate_x", Float, nullable=True),
        Column("umpire", Float, nullable=True),
        Column("pitch_type", String(512), nullable=True),
        Column("spin_rate_deprecated", Float, nullable=True),
        Column("pos8_person_id", Float, nullable=True),
        Column("pos6_person_id", Float, nullable=True),
        Column("pos2_person_id.1", Float, nullable=True),
        Column("on_3b", Float, nullable=True),
        Column("release_pos_y", Float, nullable=True),
        Column("pos2_person_id", Float, nullable=True),
        Column("launch_speed", Float, nullable=True),
        Column("ay", Float, nullable=True),
        Column("ax", Float, nullable=True),
        Column("az", Float, nullable=True),
        Column("p_throws", String(512), nullable=True),
        Column("release_speed", Float, nullable=True),
        Column("break_length_deprecated", Float, nullable=True),
        Column("at_bat_number", Float, nullable=True),
        Column("vy0", Float, nullable=True),
        Column("away_team", String(512), nullable=True),
        Column("player_name", String(512), nullable=True),
        Column("zone", Float, nullable=True),
        Column("pos7_person_id", Float, nullable=True),
        Column("babip_value", Float, nullable=True),
        Column("bb_type", String(512), nullable=True),
        Column("release_spin_rate", Float, nullable=True),
        Column("effective_speed", Float, nullable=True),
        Column("pos3_person_id", Float, nullable=True),
        Column("hc_y", Float, nullable=True),
        Column("inning_topbot", String(512), nullable=True),
        Column("release_extension", Float, nullable=True),
        Column("on_1b", Float, nullable=True),
        Column("pos1_person_id", Float, nullable=True),
        Column("hit_location", Float, nullable=True),
        Column("release_pos_x", Float, nullable=True),
        Column("events", String(512), nullable=True),
        Column("release_pos_z", Float, nullable=True),
        Column("game_year", Float, nullable=True),
        Column("pos4_person_id", Float, nullable=True),
        Column("woba_value", Float, nullable=True),
        Column("description", String(512), nullable=True),
        Column("pfx_z", Float, nullable=True),
        Column("launch_angle", Float, nullable=True),
        Column("pitcher", Float, nullable=True),
        Column("strikes", Float, nullable=True),
        Column("pos9_person_id", Float, nullable=True),
        Column("batter", Float, nullable=True),
        Column("pfx_x", Float, nullable=True),
        Column("hc_x", Float, nullable=True),
        Column("on_2b", Float, nullable=True),
        Column("game_pk", Float, nullable=True),
        Column("spin_dir", Float, nullable=True),
        Column("iso_value", Float, nullable=True),
        Column("woba_denom", Float, nullable=True),
        Column("home_team", String(512), nullable=True),
        Column("balls", Float, nullable=True),
        Column("estimated_ba_using_speedangle", Float, nullable=True),
        Column("estimated_woba_using_speedangle", Float, nullable=True),
        Column("type", String(512), nullable=True),
        Column("tfs_deprecated", Float, nullable=True),
        Column("des", String(512), nullable=True),
        Column("game_type", String(512), nullable=True),
        Column("outs_when_up", Float, nullable=True),
        Column("vx0", Float, nullable=True),
        Column("sz_top", Float, nullable=True),
        Column("launch_speed_angle", Float, nullable=True),
        Column("stand", String(512), nullable=True),
        Column("game_date", DateTime, nullable=True),
        Column("break_angle_deprecated", Float, nullable=True),
        Column("vz0", Float, nullable=True),
        Column("sv_id", String(512), nullable=True),
        Column("tfs_zulu_deprecated", Float, nullable=True),
        Column("pos5_person_id", Float, nullable=True), extend_existing=True)

    meta.create_all(statcast_engine)

    return statcast_engine


def initdb_brooks(db_username, db_password, db_hostname, db_name, db_tablename):
    db_password = ":" + <PASSWORD>
    brooks_engine = create_engine("mysql+mysqldb://" + db_username + db_password + "@" + db_hostname + "/" + db_name)
    meta = MetaData(bind=brooks_engine)

    table_brooks = Table(db_tablename, meta,
        Column("id", Integer, primary_key=True, autoincrement=True, nullable=False),
        Column("inning", Integer, nullable=True),
        Column("y0", Integer, nullable=True),
        Column("pitcher_team", String(512), nullable=True),
        Column("start_speed", Float, nullable=True),
        Column("play_guid", String(512), nullable=True),
        Column("pfx_zdatafile", Float, nullable=True),
        Column("z0", Float, nullable=True),
        Column("ab_id", Integer, nullable=True),
        Column("pitcher_id", Integer, nullable=True),
        Column("ay", Float, nullable=True),
        Column("zone_location", Float, nullable=True),
        Column("pxold", Float, nullable=True),
        Column("batter_id", Integer, nullable=True),
        Column("p_throws", String(512), nullable=True),
        Column("park_sv_id", String(512), nullable=True),
        Column("vy0", Float, nullable=True),
        Column("az", Float, nullable=True),
        Column("ab_count", Integer, nullable=True),
        Column("pz", Float, nullable=True),
        Column("spin", Float, nullable=True),
        Column("px", Float, nullable=True),
        Column("pfx_xdatafile", Float, nullable=True),
        Column("date_stamp", String(512), nullable=True),
        Column("gid", String(512), nullable=True),
        Column("ftime", Float, nullable=True),
        Column("tstart", Float, nullable=True),
        Column("uncorrected_pfx_x", Float, nullable=True),
        Column("uncorrected_pfx_z", Float, nullable=True),
        Column("type", String(512), nullable=True),
        Column("sz_bot", Float, nullable=True),
        Column("norm_ht", Float, nullable=True),
        Column("pfx_z", Float, nullable=True),
        Column("strikes", Integer, nullable=True),
        Column("mlbam_pitch_name", String(512), nullable=True),
        Column("pitch_con", Float, nullable=True),
        Column("pfx_x", Float, nullable=True),
        Column("vystart", Float, nullable=True),
        Column("ab_total", Integer, nullable=True),
        Column("pdes", String(512), nullable=True),
        Column("balls", Integer, nullable=True),
        Column("des", String(512), nullable=True),
        Column("x0", Float, nullable=True),
        Column("ax", Float, nullable=True),
        Column("sz_top", Float, nullable=True),
        Column("stand", String(512), nullable=True),
        Column("sb", Integer, nullable=True),
        Column("vz0", Float, nullable=True),
        Column("pzold", Float, nullable=True),
        Column("vx0", Float, nullable=True))

    meta.create_all(brooks_engine)

    return brooks_engine


def initdb_pitching(db_username, db_password, db_hostname, db_name, db_tablename):
    db_password = ":" + db_password
    pitching_engine = create_engine("mysql+mysqldb://" + db_username + db_password + "@" + db_hostname + "/" + db_name)
    meta = MetaData(bind=pitching_engine)

    table_pitching = Table(db_tablename, meta,
        *[Column("Name", String(512), nullable=True),
        Column("Team", String(512), nullable=True),
        Column("Age", Float, nullable=True),
        Column("ERA", Float, nullable=True),
        Column("UN (pfx)", Float, nullable=True),
        Column("wCH (pi)", Float, nullable=True),
        Column("KC-X (pfx)", Float, nullable=True),
        Column("FC-Z (pfx)", Float, nullable=True),
        Column("BB", Float, nullable=True),
        Column("wKN", Float, nullable=True),
        Column("wCH/C (pfx)", Float, nullable=True),
        Column("wKC (pfx)", Float, nullable=True),
        Column("BK", Float, nullable=True),
        Column("wCH/C (pi)", Float, nullable=True),
        Column("BU", Float, nullable=True),
        Column("FC-Z (pi)", Float, nullable=True),
        Column("BB/9", Float, nullable=True),
        Column("Oppo", Float, nullable=True),
        Column("vSC (pfx)", Float, nullable=True),
        Column("WP", Float, nullable=True),
        Column("wSL (pfx)", Float, nullable=True),
        Column("wCU (pfx)", Float, nullable=True),
        Column("SF", Float, nullable=True),
        Column("HBP", Float, nullable=True),
        Column("pLI", Float, nullable=True),
        Column("FA-X (pi)", Float, nullable=True),
        Column("vSI (pi)", Float, nullable=True),
        Column("E-F", Float, nullable=True),
        Column("FS (pi)", Float, nullable=True),
        Column("CH", Float, nullable=True),
        Column("Zone", Float, nullable=True),
        Column("RS", Float, nullable=True),
        Column("SL-Z (pfx)", Float, nullable=True),
        Column("wFC/C (pi)", Float, nullable=True),
        Column("KN", Float, nullable=True),
        Column("wFC (pfx)", Float, nullable=True),
        Column("wSL", Float, nullable=True),
        Column("Strikes", Float, nullable=True),
        Column("GB/FB", Float, nullable=True),
        Column("RAR", Float, nullable=True),
        Column("wSI (pfx)", Float, nullable=True),
        Column("FS-X (pfx)", Float, nullable=True),
        Column("SI-X (pi)", Float, nullable=True),
        Column("SL-X (pfx)", Float, nullable=True),
        Column("SB-Z (pi)", Float, nullable=True),
        Column("vFA (pi)", Float, nullable=True),
        Column("vFC (pfx)", Float, nullable=True),
        Column("FIP", Float, nullable=True),
        Column("GS", Float, nullable=True),
        Column("CS (pi)", Float, nullable=True),
        Column("Relief-IP", Float, nullable=True),
        Column("Med", Float, nullable=True),
        Column("SFv", Float, nullable=True),
        Column("H", Float, nullable=True),
        Column("SB (pi)", Float, nullable=True),
        Column("L", Float, nullable=True),
        Column("KN (pfx)", Float, nullable=True),
        Column("wFA/C (pfx)", Float, nullable=True),
        Column("FO (pfx)", Float, nullable=True),
        Column("GB", Float, nullable=True),
        Column("Swing (pfx)", Float, nullable=True),
        Column("vEP (pfx)", Float, nullable=True),
        Column("wCH (pfx)", Float, nullable=True),
        Column("wKN/C (pfx)", Float, nullable=True),
        Column("vFT (pfx)", Float, nullable=True),
        Column("FA-Z (pi)", Float, nullable=True),
        Column("SC (pfx)", Float, nullable=True),
        Column("CH-Z (pi)", Float, nullable=True),
        Column("CH (pi)", Float, nullable=True),
        Column("wCT", Float, nullable=True),
        Column("FDP-Wins", Float, nullable=True),
        Column("FT (pfx)", Float, nullable=True),
        Column("KN (pi)", Float, nullable=True),
        Column("ERA-", Float, nullable=True),
        Column("wKN/C", Float, nullable=True),
        Column("BUH", Float, nullable=True),
        Column("wCB", Float, nullable=True),
        Column("wFC/C (pfx)", Float, nullable=True),
        Column("Z-Contact (pfx)", Float, nullable=True),
        Column("CHv", Float, nullable=True),
        Column("CH-X (pfx)", Float, nullable=True),
        Column("KNv", Float, nullable=True),
        Column("wCH", Float, nullable=True),
        Column("wCB/C", Float, nullable=True),
        Column("SL-X (pi)", Float, nullable=True),
        Column("ShO", Float, nullable=True),
        Column("vCS (pi)", Float, nullable=True),
        Column("SIERA", Float, nullable=True),
        Column("Pace (pi)", Float, nullable=True),
        Column("FB", Float, nullable=True),
        Column("CB", Float, nullable=True),
        Column("HR", Float, nullable=True),
        Column("FA (pi)", Float, nullable=True),
        Column("BS", Float, nullable=True),
        Column("wFB/C", Float, nullable=True),
        Column("KC (pfx)", Float, nullable=True),
        Column("tERA", Float, nullable=True),
        Column("EP-Z (pfx)", Float, nullable=True),
        Column("K/9", Float, nullable=True),
        Column("FC (pi)", Float, nullable=True),
        Column("FS-Z (pfx)", Float, nullable=True),
        Column("wSC/C (pfx)", Float, nullable=True),
        Column("IFH", Float, nullable=True),
        Column("EP-X (pfx)", Float, nullable=True),
        Column("EP (pfx)", Float, nullable=True),
        Column("H/9", Float, nullable=True),
        Column("wFC (pi)", Float, nullable=True),
        Column("wKN (pfx)", Float, nullable=True),
        Column("G", Float, nullable=True),
        Column("CU-X (pi)", Float, nullable=True),
        Column("Soft", Float, nullable=True),
        Column("Season", Float, nullable=True),
        Column("wEP/C (pfx)", Float, nullable=True),
        Column("vSL (pi)", Float, nullable=True),
        Column("Hard", Float, nullable=True),
        Column("SwStr", Float, nullable=True),
        Column("FS (pfx)", Float, nullable=True),
        Column("kwERA", Float, nullable=True),
        Column("BUH", Float, nullable=True),
        Column("wFT (pfx)", Float, nullable=True),
        Column("vCU (pi)", Float, nullable=True),
        Column("wSB/C (pi)", Float, nullable=True),
        Column("LOB-Wins", Float, nullable=True),
        Column("HR/FB", Float, nullable=True),
        Column("SI-Z (pi)", Float, nullable=True),
        Column("wXX (pi)", Float, nullable=True),
        Column("SC-X (pfx)", Float, nullable=True),
        Column("wCS (pi)", Float, nullable=True),
        Column("Age Rng", String(512), nullable=True),
        Column("SL (pi)", Float, nullable=True),
        Column("CS-X (pi)", Float, nullable=True),
        Column("wSI/C (pfx)", Float, nullable=True),
        Column("wCU (pi)", Float, nullable=True),
        Column("wFS/C (pfx)", Float, nullable=True),
        Column("wEP (pfx)", Float, nullable=True),
        Column("LD", Float, nullable=True),
        Column("Clutch", Float, nullable=True),
        Column("Dollars", String(512), nullable=True),
        Column("wSF/C", Float, nullable=True),
        Column("wFS/C (pi)", Float, nullable=True),
        Column("RS/9", Float, nullable=True),
        Column("vFA (pfx)", Float, nullable=True),
        Column("CBv", Float, nullable=True),
        Column("Swing", Float, nullable=True),
        Column("W", Float, nullable=True),
        Column("O-Swing (pfx)", Float, nullable=True),
        Column("wSL (pi)", Float, nullable=True),
        Column("xFIP", Float, nullable=True),
        Column("FO-Z (pfx)", Float, nullable=True),
        Column("ER", Float, nullable=True),
        Column("SI-Z (pfx)", Float, nullable=True),
        Column("MD", Float, nullable=True),
        Column("GB", Float, nullable=True),
        Column("FC-X (pfx)", Float, nullable=True),
        Column("Z-Swing (pi)", Float, nullable=True),
        Column("wSF", Float, nullable=True),
        Column("vKN (pi)", Float, nullable=True),
        Column("HR/9", Float, nullable=True),
        Column("CH (pfx)", Float, nullable=True),
        Column("vSL (pfx)", Float, nullable=True),
        Column("wSB (pi)", Float, nullable=True),
        Column("FA-Z (pfx)", Float, nullable=True),
        Column("Pull", Float, nullable=True),
        Column("Z-Swing (pfx)", Float, nullable=True),
        Column("FA (pfx)", Float, nullable=True),
        Column("AVG", Float, nullable=True),
        Column("wFS (pfx)", Float, nullable=True),
        Column("FIP-", Float, nullable=True),
        Column("K/BB", Float, nullable=True),
        Column("TBF", Float, nullable=True),
        Column("SI-X (pfx)", Float, nullable=True),
        Column("wSI/C (pi)", Float, nullable=True),
        Column("XX", Float, nullable=True),
        Column("K", Float, nullable=True),
        Column("F-Strike", Float, nullable=True),
        Column("REW", Float, nullable=True),
        Column("vFO (pfx)", Float, nullable=True),
        Column("FB", Float, nullable=True),
        Column("WPA/LI", Float, nullable=True),
        Column("SL-Z (pi)", Float, nullable=True),
        Column("FC-X (pi)", Float, nullable=True),
        Column("wSI (pi)", Float, nullable=True),
        Column("CU-Z (pfx)", Float, nullable=True),
        Column("XX-X (pi)", Float, nullable=True),
        Column("Contact (pfx)", Float, nullable=True),
        Column("CTv", Float, nullable=True),
        Column("FS-Z (pi)", Float, nullable=True),
        Column("BABIP", Float, nullable=True),
        Column("wFB", Float, nullable=True),
        Column("CH-X (pi)", Float, nullable=True),
        Column("wCH/C", Float, nullable=True),
        Column("Pitches", Float, nullable=True),
        Column("KN-X (pfx)", Float, nullable=True),
        Column("RE24", Float, nullable=True),
        Column("wKN/C (pi)", Float, nullable=True),
        Column("wSL/C (pi)", Float, nullable=True),
        Column("SC-Z (pfx)", Float, nullable=True),
        Column("vXX (pi)", Float, nullable=True),
        Column("Pace", Float, nullable=True),
        Column("KN-X (pi)", Float, nullable=True),
        Column("WPA", Float, nullable=True),
        Column("CU-X (pfx)", Float, nullable=True),
        Column("wFS (pi)", Float, nullable=True),
        Column("gmLI", Float, nullable=True),
        Column("Balls", Float, nullable=True),
        Column("Swing (pi)", Float, nullable=True),
        Column("FBv", Float, nullable=True),
        Column("KC-Z (pfx)", Float, nullable=True),
        Column("CG", Float, nullable=True),
        Column("XX (pi)", Float, nullable=True),
        Column("wFA (pfx)", Float, nullable=True),
        Column("wCT/C", Float, nullable=True),
        Column("R", Float, nullable=True),
        Column("wCU/C (pi)", Float, nullable=True),
        Column("O-Swing", Float, nullable=True),
        Column("Starting", Float, nullable=True),
        Column("WAR", Float, nullable=True),
        Column("WHIP", Float, nullable=True),
        Column("wXX/C (pi)", Float, nullable=True),
        Column("LOB", Float, nullable=True),
        Column("CU-Z (pi)", Float, nullable=True),
        Column("wKN (pi)", Float, nullable=True),
        Column("BIP-Wins", Float, nullable=True),
        Column("-WPA", Float, nullable=True),
        Column("wFA (pi)", Float, nullable=True),
        Column("SV", Float, nullable=True),
        Column("wFO/C (pfx)", Float, nullable=True),
        Column("CT", Float, nullable=True),
        Column("vFC (pi)", Float, nullable=True),
        Column("IFFB", Float, nullable=True),
        Column("SO", Float, nullable=True),
        Column("Cent", Float, nullable=True),
        Column("Start-IP", Float, nullable=True),
        Column("FS-X (pi)", Float, nullable=True),
        Column("O-Swing (pi)", Float, nullable=True),
        Column("XX-Z (pi)", Float, nullable=True),
        Column("CS-Z (pi)", Float, nullable=True),
        Column("SL (pfx)", Float, nullable=True),
        Column("O-Contact (pi)", Float, nullable=True),
        Column("SD", Float, nullable=True),
        Column("wCS/C (pi)", Float, nullable=True),
        Column("vKN (pfx)", Float, nullable=True),
        Column("Relieving", Float, nullable=True),
        Column("FA-X (pfx)", Float, nullable=True),
        Column("IBB", Float, nullable=True),
        Column("Zone (pi)", Float, nullable=True),
        Column("vFS (pfx)", Float, nullable=True),
        Column("FO-X (pfx)", Float, nullable=True),
        Column("inLI", Float, nullable=True),
        Column("FT-X (pfx)", Float, nullable=True),
        Column("vKC (pfx)", Float, nullable=True),
        Column("FC (pfx)", Float, nullable=True),
        Column("K-BB", Float, nullable=True),
        Column("LD", Float, nullable=True),
        Column("wFA/C (pi)", Float, nullable=True),
        Column("xFIP-", Float, nullable=True),
        Column("BB", Float, nullable=True),
        Column("wFT/C (pfx)", Float, nullable=True),
        Column("Zone (pfx)", Float, nullable=True),
        Column("wSL/C (pfx)", Float, nullable=True),
        Column("wKC/C (pfx)", Float, nullable=True),
        Column("IFFB", Float, nullable=True),
        Column("Z-Contact (pi)", Float, nullable=True),
        Column("SL", Float, nullable=True),
        Column("CU (pfx)", Float, nullable=True),
        Column("IFH", Float, nullable=True),
        Column("O-Contact (pfx)", Float, nullable=True),
        Column("vCU (pfx)", Float, nullable=True),
        Column("wCU/C (pfx)", Float, nullable=True),
        Column("TTO", Float, nullable=True),
        Column("vSB (pi)", Float, nullable=True),
        Column("IP", Float, nullable=True),
        Column("RA9-WAR", Float, nullable=True),
        Column("vFS (pi)", Float, nullable=True),
        Column("wSC (pfx)", Float, nullable=True),
        Column("Z-Swing", Float, nullable=True),
        Column("O-Contact", Float, nullable=True),
        Column("CH-Z (pfx)", Float, nullable=True),
        Column("exLI", Float, nullable=True),
        Column("SB-X (pi)", Float, nullable=True),
        Column("FT-Z (pfx)", Float, nullable=True),
        Column("PO", Float, nullable=True),
        Column("vSI (pfx)", Float, nullable=True),
        Column("Z-Contact", Float, nullable=True),
        Column("CU (pi)", Float, nullable=True),
        Column("HLD", Float, nullable=True),
        Column("Contact", Float, nullable=True),
        Column("wSL/C", Float, nullable=True),
        Column("SLv", Float, nullable=True),
        Column("SI (pfx)", Float, nullable=True),
        Column("SI (pi)", Float, nullable=True),
        Column("vCH (pi)", Float, nullable=True),
        Column("wFO (pfx)", Float, nullable=True),
        Column("+WPA", Float, nullable=True),
        Column("vCH (pfx)", Float, nullable=True),
        Column("KN-Z (pi)", Float, nullable=True),
        Column("Pulls", Float, nullable=True),
        Column("Contact (pi)", Float, nullable=True),
        Column("KN-Z (pfx)", Float, nullable=True)])

    meta.create_all(pitching_engine)

    return pitching_engine


def initdb_batting(db_username, db_password, db_hostname, db_name, db_tablename):
    db_password = ":" + db_password
    engine = create_engine("mysql+mysqldb://" + db_username + db_password + "@" + db_hostname + "/" + db_name)
    meta = MetaData(bind=engine)

    table_batting = Table(db_tablename, meta,
        *[
            Column("Name", String(512), nullable=True),
            Column("Team", String(512), nullable=True),
            Column("Age", Float, nullable=True),
            Column("UN (pfx)", Float, nullable=True),
            Column("wCH (pi)", Float, nullable=True),
            Column("KC-X (pfx)", Float, nullable=True),
            Column("FC-Z (pfx)", Float, nullable=True),
            Column("BB", Float, nullable=True),
            Column("wKN", Float, nullable=True),
            Column("wCH/C (pfx)", Float, nullable=True),
            Column("wKC (pfx)", Float, nullable=True),
            Column("Hard", Float, nullable=True),
            Column("wCH/C (pi)", Float, nullable=True),
            Column("BU", Float, nullable=True),
            Column("FC-Z (pi)", Float, nullable=True),
            Column("Oppo", Float, nullable=True),
            Column("vSC (pfx)", Float, nullable=True),
            Column("wSL (pfx)", Float, nullable=True),
            Column("wCU (pfx)", Float, nullable=True),
            Column("SF", Float, nullable=True),
            Column("HBP", Float, nullable=True),
            Column("pLI", Float, nullable=True),
            Column("FA-X (pi)", Float, nullable=True),
            Column("vSI (pi)", Float, nullable=True),
            Column("vFA (pfx)", Float, nullable=True),
            Column("FS (pi)", Float, nullable=True),
            Column("CH", Float, nullable=True),
            Column("Zone", Float, nullable=True),
            Column("wSF", Float, nullable=True),
            Column("SL-Z (pfx)", Float, nullable=True),
            Column("wFC/C (pi)", Float, nullable=True),
            Column("KN", Float, nullable=True),
            Column("wFC (pfx)", Float, nullable=True),
            Column("wSL", Float, nullable=True),
            Column("Strikes", Float, nullable=True),
            Column("GB/FB", Float, nullable=True),
            Column("wFT (pfx)", Float, nullable=True),
            Column("RAR", Float, nullable=True),
            Column("wSI (pfx)", Float, nullable=True),
            Column("FS-X (pfx)", Float, nullable=True),
            Column("SI-X (pi)", Float, nullable=True),
            Column("SL-X (pfx)", Float, nullable=True),
            Column("SB-Z (pi)", Float, nullable=True),
            Column("vFA (pi)", Float, nullable=True),
            Column("vFC (pfx)", Float, nullable=True),
            Column("Bat", Float, nullable=True),
            Column("CS (pi)", Float, nullable=True),
            Column("wFA/C (pi)", Float, nullable=True),
            Column("Med", Float, nullable=True),
            Column("SFv", Float, nullable=True),
            Column("H", Float, nullable=True),
            Column("Def", Float, nullable=True),
            Column("KN (pfx)", Float, nullable=True),
            Column("SB (pi)", Float, nullable=True),
            Column("wFA/C (pfx)", Float, nullable=True),
            Column("FO (pfx)", Float, nullable=True),
            Column("GB", Float, nullable=True),
            Column("2B", Float, nullable=True),
            Column("Swing (pfx)", Float, nullable=True),
            Column("vEP (pfx)", Float, nullable=True),
            Column("wCH (pfx)", Float, nullable=True),
            Column("vFT (pfx)", Float, nullable=True),
            Column("FA-Z (pi)", Float, nullable=True),
            Column("CU-Z (pi)", Float, nullable=True),
            Column("CH-Z (pi)", Float, nullable=True),
            Column("CH (pi)", Float, nullable=True),
            Column("wCT", Float, nullable=True),
            Column("BB/K", Float, nullable=True),
            Column("FT (pfx)", Float, nullable=True),
            Column("KN (pi)", Float, nullable=True),
            Column("wKN/C", Float, nullable=True),
            Column("BUH", Float, nullable=True),
            Column("wCB", Float, nullable=True),
            Column("wFC/C (pfx)", Float, nullable=True),
            Column("Z-Contact (pfx)", Float, nullable=True),
            Column("CHv", Float, nullable=True),
            Column("CH-X (pfx)", Float, nullable=True),
            Column("KNv", Float, nullable=True),
            Column("wCH", Float, nullable=True),
            Column("wCB/C", Float, nullable=True),
            Column("Spd", Float, nullable=True),
            Column("SL-X (pi)", Float, nullable=True),
            Column("vCS (pi)", Float, nullable=True),
            Column("FB", Float, nullable=True),
            Column("CB", Float, nullable=True),
            Column("HR", Float, nullable=True),
            Column("Rep", Float, nullable=True),
            Column("wFB/C", Float, nullable=True),
            Column("KC (pfx)", Float, nullable=True),
            Column("EP-Z (pfx)", Float, nullable=True),
            Column("FC (pi)", Float, nullable=True),
            Column("FS-Z (pfx)", Float, nullable=True),
            Column("3B", Float, nullable=True),
            Column("wSC/C (pfx)", Float, nullable=True),
            Column("IFH", Float, nullable=True),
            Column("EP-X (pfx)", Float, nullable=True),
            Column("EP (pfx)", Float, nullable=True),
            Column("wCH/C", Float, nullable=True),
            Column("wFC (pi)", Float, nullable=True),
            Column("wKN (pfx)", Float, nullable=True),
            Column("G", Float, nullable=True),
            Column("CU-X (pi)", Float, nullable=True),
            Column("Soft", Float, nullable=True),
            Column("Season", Float, nullable=True),
            Column("wEP/C (pfx)", Float, nullable=True),
            Column("vSL (pi)", Float, nullable=True),
            Column("BABIP", Float, nullable=True),
            Column("SwStr", Float, nullable=True),
            Column("wRC+", Float, nullable=True),
            Column("FS (pfx)", Float, nullable=True),
            Column("BUH", Float, nullable=True),
            Column("PA", Float, nullable=True),
            Column("vCU (pi)", Float, nullable=True),
            Column("wSB/C (pi)", Float, nullable=True),
            Column("HR/FB", Float, nullable=True),
            Column("SI-Z (pi)", Float, nullable=True),
            Column("PH", Float, nullable=True),
            Column("wXX (pi)", Float, nullable=True),
            Column("SC-X (pfx)", Float, nullable=True),
            Column("wCS (pi)", Float, nullable=True),
            Column("Age Rng", String(512), nullable=True),
            Column("SL (pi)", Float, nullable=True),
            Column("CS-X (pi)", Float, nullable=True),
            Column("wSI/C (pfx)", Float, nullable=True),
            Column("wCU (pi)", Float, nullable=True),
            Column("wFS/C (pfx)", Float, nullable=True),
            Column("LD", Float, nullable=True),
            Column("Clutch", Float, nullable=True),
            Column("FS-Z (pi)", Float, nullable=True),
            Column("wSF/C", Float, nullable=True),
            Column("wFS/C (pi)", Float, nullable=True),
            Column("Pace", Float, nullable=True),
            Column("wSB", Float, nullable=True),
            Column("CBv", Float, nullable=True),
            Column("Swing", Float, nullable=True),
            Column("wCU/C (pi)", Float, nullable=True),
            Column("O-Swing (pfx)", Float, nullable=True),
            Column("wSL (pi)", Float, nullable=True),
            Column("KN-X (pfx)", Float, nullable=True),
            Column("FO-Z (pfx)", Float, nullable=True),
            Column("SI-Z (pfx)", Float, nullable=True),
            Column("phLI", Float, nullable=True),
            Column("GB", Float, nullable=True),
            Column("wRC", Float, nullable=True),
            Column("OPS", Float, nullable=True),
            Column("WAR", Float, nullable=True),
            Column("vKN (pfx)", Float, nullable=True),
            Column("TTO", Float, nullable=True),
            Column("vKN (pi)", Float, nullable=True),
            Column("wKN/C (pfx)", Float, nullable=True),
            Column("CH (pfx)", Float, nullable=True),
            Column("vSL (pfx)", Float, nullable=True),
            Column("wGDP", Float, nullable=True),
            Column("FA-Z (pfx)", Float, nullable=True),
            Column("Pull", Float, nullable=True),
            Column("Z-Swing (pfx)", Float, nullable=True),
            Column("FA (pfx)", Float, nullable=True),
            Column("IFFB", Float, nullable=True),
            Column("wFS (pfx)", Float, nullable=True),
            Column("FA (pi)", Float, nullable=True),
            Column("wKN (pi)", Float, nullable=True),
            Column("SC (pfx)", Float, nullable=True),
            Column("FS-X (pi)", Float, nullable=True),
            Column("SI-X (pfx)", Float, nullable=True),
            Column("wSI/C (pi)", Float, nullable=True),
            Column("XX", Float, nullable=True),
            Column("K", Float, nullable=True),
            Column("wCS/C (pi)", Float, nullable=True),
            Column("F-Strike", Float, nullable=True),
            Column("REW", Float, nullable=True),
            Column("vFO (pfx)", Float, nullable=True),
            Column("FB", Float, nullable=True),
            Column("1B", Float, nullable=True),
            Column("ISO", Float, nullable=True),
            Column("WPA/LI", Float, nullable=True),
            Column("SL-Z (pi)", Float, nullable=True),
            Column("FC-X (pi)", Float, nullable=True),
            Column("wSI (pi)", Float, nullable=True),
            Column("CU-Z (pfx)", Float, nullable=True),
            Column("XX-X (pi)", Float, nullable=True),
            Column("Contact (pfx)", Float, nullable=True),
            Column("CTv", Float, nullable=True),
            Column("PO", Float, nullable=True),
            Column("wOBA", Float, nullable=True),
            Column("wFB", Float, nullable=True),
            Column("CH-X (pi)", Float, nullable=True),
            Column("BB", Float, nullable=True),
            Column("Pitches", Float, nullable=True),
            Column("vXX (pi)", Float, nullable=True),
            Column("RE24", Float, nullable=True),
            Column("wKN/C (pi)", Float, nullable=True),
            Column("wSL/C (pi)", Float, nullable=True),
            Column("SC-Z (pfx)", Float, nullable=True),
            Column("FB (Pitch)", Float, nullable=True),
            Column("KN-X (pi)", Float, nullable=True),
            Column("WPA", Float, nullable=True),
            Column("CU-X (pfx)", Float, nullable=True),
            Column("wFS (pi)", Float, nullable=True),
            Column("FA-X (pfx)", Float, nullable=True),
            Column("Balls", Float, nullable=True),
            Column("Swing (pi)", Float, nullable=True),
            Column("FBv", Float, nullable=True),
            Column("KC-Z (pfx)", Float, nullable=True),
            Column("Z-Swing (pi)", Float, nullable=True),
            Column("XX (pi)", Float, nullable=True),
            Column("wFA (pfx)", Float, nullable=True),
            Column("wCT/C", Float, nullable=True),
            Column("R", Float, nullable=True),
            Column("CS", Float, nullable=True),
            Column("O-Swing", Float, nullable=True),
            Column("Fld", Float, nullable=True),
            Column("OBP", Float, nullable=True),
            Column("wXX/C (pi)", Float, nullable=True),
            Column("GDP", Float, nullable=True),
            Column("-WPA", Float, nullable=True),
            Column("wFA (pi)", Float, nullable=True),
            Column("FC-X (pfx)", Float, nullable=True),
            Column("wFO/C (pfx)", Float, nullable=True),
            Column("CT", Float, nullable=True),
            Column("vFC (pi)", Float, nullable=True),
            Column("SH", Float, nullable=True),
            Column("SO", Float, nullable=True),
            Column("Cent", Float, nullable=True),
            Column("wEP (pfx)", Float, nullable=True),
            Column("wSL/C", Float, nullable=True),
            Column("O-Swing (pi)", Float, nullable=True),
            Column("SB", Float, nullable=True),
            Column("CS-Z (pi)", Float, nullable=True),
            Column("SL (pfx)", Float, nullable=True),
            Column("SF", Float, nullable=True),
            Column("O-Contact (pi)", Float, nullable=True),
            Column("Zone (pi)", Float, nullable=True),
            Column("Lg", Float, nullable=True),
            Column("vSB (pi)", Float, nullable=True),
            Column("IBB", Float, nullable=True),
            Column("BsR", Float, nullable=True),
            Column("SI (pi)", Float, nullable=True),
            Column("vFS (pfx)", Float, nullable=True),
            Column("FO-X (pfx)", Float, nullable=True),
            Column("XX-Z (pi)", Float, nullable=True),
            Column("FT-X (pfx)", Float, nullable=True),
            Column("wSB (pi)", Float, nullable=True),
            Column("vKC (pfx)", Float, nullable=True),
            Column("FC (pfx)", Float, nullable=True),
            Column("LD", Float, nullable=True),
            Column("UBR", Float, nullable=True),
            Column("wFT/C (pfx)", Float, nullable=True),
            Column("Zone (pfx)", Float, nullable=True),
            Column("wSL/C (pfx)", Float, nullable=True),
            Column("wKC/C (pfx)", Float, nullable=True),
            Column("IFFB", Float, nullable=True),
            Column("Z-Contact (pi)", Float, nullable=True),
            Column("SL", Float, nullable=True),
            Column("CU (pfx)", Float, nullable=True),
            Column("IFH", Float, nullable=True),
            Column("O-Contact (pfx)", Float, nullable=True),
            Column("vCU (pfx)", Float, nullable=True),
            Column("wCU/C (pfx)", Float, nullable=True),
            Column("AB", Float, nullable=True),
            Column("Off", Float, nullable=True),
            Column("Dol", String(512), nullable=True),
            Column("Pace (pi)", Float, nullable=True),
            Column("vFS (pi)", Float, nullable=True),
            Column("wSC (pfx)", Float, nullable=True),
            Column("Z-Swing", Float, nullable=True),
            Column("O-Contact", Float, nullable=True),
            Column("CH-Z (pfx)", Float, nullable=True),
            Column("RBI", Float, nullable=True),
            Column("SB-X (pi)", Float, nullable=True),
            Column("FT-Z (pfx)", Float, nullable=True),
            Column("SLG", Float, nullable=True),
            Column("vSI (pfx)", Float, nullable=True),
            Column("Z-Contact", Float, nullable=True),
            Column("CU (pi)", Float, nullable=True),
            Column("AVG", Float, nullable=True),
            Column("Contact", Float, nullable=True),
            Column("wRAA", Float, nullable=True),
            Column("SLv", Float, nullable=True),
            Column("SI (pfx)", Float, nullable=True),
            Column("Pos", Float, nullable=True),
            Column("vCH (pi)", Float, nullable=True),
            Column("wFO (pfx)", Float, nullable=True),
            Column("+WPA", Float, nullable=True),
            Column("vCH (pfx)", Float, nullable=True),
            Column("KN-Z (pi)", Float, nullable=True),
            Column("Contact (pi)", Float, nullable=True),
            Column("KN-Z (pfx)", Float, nullable=True)])

    meta.create_all(engine)

    return engine


def initdb_teambatting(db_username, db_password, db_hostname, db_name, db_tablename):
    db_password = ":" + <PASSWORD>
    engine = create_engine("mysql+mysqldb://" + db_username + db_password + "@" + db_hostname + "/" + db_name)
    meta = MetaData(bind=engine)

    table_teambatting = Table(db_tablename, meta,
        *[
            Column("Team", String(512), nullable=True),
            Column("Season", Float, nullable=True),
            Column("SLG", Float, nullable=True),
            Column("Off", Float, nullable=True),
            Column("PA", Float, nullable=True),
            Column("G", Float, nullable=True),
            Column("wOBA", Float, nullable=True),
            Column("HR", Float, nullable=True),
            Column("BB", Float, nullable=True),
            Column("BsR", Float, nullable=True),
            Column("WAR", Float, nullable=True),
            Column("BABIP", Float, nullable=True),
            Column("K", Float, nullable=True),
            Column("R", Float, nullable=True),
            Column("ISO", Float, nullable=True),
            Column("Def", Float, nullable=True),
            Column("RBI", Float, nullable=True),
            Column("SB", Float, nullable=True),
            Column("AVG", Float, nullable=True),
            Column("wRC+", Float, nullable=True),
            Column("OBP", Float, nullable=True)])

    meta.create_all(engine)

    return engine


def initdb_teampitching(db_username, db_password, db_hostname, db_name, db_tablename):
    db_password = ":" + db_password
    engine = create_engine("mysql+mysqldb://" + db_username + db_password + "@" + db_hostname + "/" + db_name)
    meta = MetaData(bind=engine)

    table_teampitching = Table(db_tablename, meta,
        *[
            Column("Team", String(512), nullable=True),
            Column("Season", Float, nullable=True),
            Column("SLG", Float, nullable=True),
            Column("Off", Float, nullable=True),
            Column("PA", Float, nullable=True),
            Column("G", Float, nullable=True),
            Column("wOBA", Float, nullable=True),
            Column("HR", Float, nullable=True),
            Column("BB", Float, nullable=True),
            Column("BsR", Float, nullable=True),
            Column("WAR", Float, nullable=True),
            Column("BABIP", Float, nullable=True),
            Column("K", Float, nullable=True),
            Column("R", Float, nullable=True),
            Column("ISO", Float, nullable=True),
            Column("Def", Float, nullable=True),
            Column("RBI", Float, nullable=True),
            Column("SB", Float, nullable=True),
            Column("AVG", Float, nullable=True),
            Column("wRC+", Float, nullable=True),
            Column("OBP", Float, nullable=True)])

    meta.create_all(engine)

    return engine
from sqlalchemy import *
import click


def upload_block(data, db_engine, db_tablename):
    data.to_sql(db_tablename, con=db_engine, if_exists='append', index=False, chunksize=10000)


def initdb_statcast(db_username, db_password, db_hostname, db_name, db_tablename):
    db_password = ":" + db_password
    statcast_engine = create_engine("mysql+mysqldb://" + db_username + db_password + "@" + db_hostname + "/" + db_name)
    meta = MetaData(bind=statcast_engine)

    table_statcast = Table(db_tablename, meta,
        Column("id", Integer, primary_key=True, autoincrement=True, nullable=False),
        Column("index", Integer, nullable=True),
        Column("sz_bot", Float, nullable=True),
        Column("inning", Float, nullable=True),
        Column("pitch_number", Float, nullable=True),
        Column("hit_distance_sc", Float, nullable=True),
        Column("plate_z", Float, nullable=True),
        Column("plate_x", Float, nullable=True),
        Column("umpire", Float, nullable=True),
        Column("pitch_type", String(512), nullable=True),
        Column("spin_rate_deprecated", Float, nullable=True),
        Column("pos8_person_id", Float, nullable=True),
        Column("pos6_person_id", Float, nullable=True),
        Column("pos2_person_id.1", Float, nullable=True),
        Column("on_3b", Float, nullable=True),
        Column("release_pos_y", Float, nullable=True),
        Column("pos2_person_id", Float, nullable=True),
        Column("launch_speed", Float, nullable=True),
        Column("ay", Float, nullable=True),
        Column("ax", Float, nullable=True),
        Column("az", Float, nullable=True),
        Column("p_throws", String(512), nullable=True),
        Column("release_speed", Float, nullable=True),
        Column("break_length_deprecated", Float, nullable=True),
        Column("at_bat_number", Float, nullable=True),
        Column("vy0", Float, nullable=True),
        Column("away_team", String(512), nullable=True),
        Column("player_name", String(512), nullable=True),
        Column("zone", Float, nullable=True),
        Column("pos7_person_id", Float, nullable=True),
        Column("babip_value", Float, nullable=True),
        Column("bb_type", String(512), nullable=True),
        Column("release_spin_rate", Float, nullable=True),
        Column("effective_speed", Float, nullable=True),
        Column("pos3_person_id", Float, nullable=True),
        Column("hc_y", Float, nullable=True),
        Column("inning_topbot", String(512), nullable=True),
        Column("release_extension", Float, nullable=True),
        Column("on_1b", Float, nullable=True),
        Column("pos1_person_id", Float, nullable=True),
        Column("hit_location", Float, nullable=True),
        Column("release_pos_x", Float, nullable=True),
        Column("events", String(512), nullable=True),
        Column("release_pos_z", Float, nullable=True),
        Column("game_year", Float, nullable=True),
        Column("pos4_person_id", Float, nullable=True),
        Column("woba_value", Float, nullable=True),
        Column("description", String(512), nullable=True),
        Column("pfx_z", Float, nullable=True),
        Column("launch_angle", Float, nullable=True),
        Column("pitcher", Float, nullable=True),
        Column("strikes", Float, nullable=True),
        Column("pos9_person_id", Float, nullable=True),
        Column("batter", Float, nullable=True),
        Column("pfx_x", Float, nullable=True),
        Column("hc_x", Float, nullable=True),
        Column("on_2b", Float, nullable=True),
        Column("game_pk", Float, nullable=True),
        Column("spin_dir", Float, nullable=True),
        Column("iso_value", Float, nullable=True),
        Column("woba_denom", Float, nullable=True),
        Column("home_team", String(512), nullable=True),
        Column("balls", Float, nullable=True),
        Column("estimated_ba_using_speedangle", Float, nullable=True),
        Column("estimated_woba_using_speedangle", Float, nullable=True),
        Column("type", String(512), nullable=True),
        Column("tfs_deprecated", Float, nullable=True),
        Column("des", String(512), nullable=True),
        Column("game_type", String(512), nullable=True),
        Column("outs_when_up", Float, nullable=True),
        Column("vx0", Float, nullable=True),
        Column("sz_top", Float, nullable=True),
        Column("launch_speed_angle", Float, nullable=True),
        Column("stand", String(512), nullable=True),
        Column("game_date", DateTime, nullable=True),
        Column("break_angle_deprecated", Float, nullable=True),
        Column("vz0", Float, nullable=True),
        Column("sv_id", String(512), nullable=True),
        Column("tfs_zulu_deprecated", Float, nullable=True),
        Column("pos5_person_id", Float, nullable=True), extend_existing=True)

    meta.create_all(statcast_engine)

    return statcast_engine


def initdb_brooks(db_username, db_password, db_hostname, db_name, db_tablename):
    db_password = ":" + <PASSWORD>
    brooks_engine = create_engine("mysql+mysqldb://" + db_username + db_password + "@" + db_hostname + "/" + db_name)
    meta = MetaData(bind=brooks_engine)

    table_brooks = Table(db_tablename, meta,
        Column("id", Integer, primary_key=True, autoincrement=True, nullable=False),
        Column("inning", Integer, nullable=True),
        Column("y0", Integer, nullable=True),
        Column("pitcher_team", String(512), nullable=True),
        Column("start_speed", Float, nullable=True),
        Column("play_guid", String(512), nullable=True),
        Column("pfx_zdatafile", Float, nullable=True),
        Column("z0", Float, nullable=True),
        Column("ab_id", Integer, nullable=True),
        Column("pitcher_id", Integer, nullable=True),
        Column("ay", Float, nullable=True),
        Column("zone_location", Float, nullable=True),
        Column("pxold", Float, nullable=True),
        Column("batter_id", Integer, nullable=True),
        Column("p_throws", String(512), nullable=True),
        Column("park_sv_id", String(512), nullable=True),
        Column("vy0", Float, nullable=True),
        Column("az", Float, nullable=True),
        Column("ab_count", Integer, nullable=True),
        Column("pz", Float, nullable=True),
        Column("spin", Float, nullable=True),
        Column("px", Float, nullable=True),
        Column("pfx_xdatafile", Float, nullable=True),
        Column("date_stamp", String(512), nullable=True),
        Column("gid", String(512), nullable=True),
        Column("ftime", Float, nullable=True),
        Column("tstart", Float, nullable=True),
        Column("uncorrected_pfx_x", Float, nullable=True),
        Column("uncorrected_pfx_z", Float, nullable=True),
        Column("type", String(512), nullable=True),
        Column("sz_bot", Float, nullable=True),
        Column("norm_ht", Float, nullable=True),
        Column("pfx_z", Float, nullable=True),
        Column("strikes", Integer, nullable=True),
        Column("mlbam_pitch_name", String(512), nullable=True),
        Column("pitch_con", Float, nullable=True),
        Column("pfx_x", Float, nullable=True),
        Column("vystart", Float, nullable=True),
        Column("ab_total", Integer, nullable=True),
        Column("pdes", String(512), nullable=True),
        Column("balls", Integer, nullable=True),
        Column("des", String(512), nullable=True),
        Column("x0", Float, nullable=True),
        Column("ax", Float, nullable=True),
        Column("sz_top", Float, nullable=True),
        Column("stand", String(512), nullable=True),
        Column("sb", Integer, nullable=True),
        Column("vz0", Float, nullable=True),
        Column("pzold", Float, nullable=True),
        Column("vx0", Float, nullable=True))

    meta.create_all(brooks_engine)

    return brooks_engine


def initdb_pitching(db_username, db_password, db_hostname, db_name, db_tablename):
    db_password = ":" + db_password
    pitching_engine = create_engine("mysql+mysqldb://" + db_username + db_password + "@" + db_hostname + "/" + db_name)
    meta = MetaData(bind=pitching_engine)

    table_pitching = Table(db_tablename, meta,
        *[Column("Name", String(512), nullable=True),
        Column("Team", String(512), nullable=True),
        Column("Age", Float, nullable=True),
        Column("ERA", Float, nullable=True),
        Column("UN (pfx)", Float, nullable=True),
        Column("wCH (pi)", Float, nullable=True),
        Column("KC-X (pfx)", Float, nullable=True),
        Column("FC-Z (pfx)", Float, nullable=True),
        Column("BB", Float, nullable=True),
        Column("wKN", Float, nullable=True),
        Column("wCH/C (pfx)", Float, nullable=True),
        Column("wKC (pfx)", Float, nullable=True),
        Column("BK", Float, nullable=True),
        Column("wCH/C (pi)", Float, nullable=True),
        Column("BU", Float, nullable=True),
        Column("FC-Z (pi)", Float, nullable=True),
        Column("BB/9", Float, nullable=True),
        Column("Oppo", Float, nullable=True),
        Column("vSC (pfx)", Float, nullable=True),
        Column("WP", Float, nullable=True),
        Column("wSL (pfx)", Float, nullable=True),
        Column("wCU (pfx)", Float, nullable=True),
        Column("SF", Float, nullable=True),
        Column("HBP", Float, nullable=True),
        Column("pLI", Float, nullable=True),
        Column("FA-X (pi)", Float, nullable=True),
        Column("vSI (pi)", Float, nullable=True),
        Column("E-F", Float, nullable=True),
        Column("FS (pi)", Float, nullable=True),
        Column("CH", Float, nullable=True),
        Column("Zone", Float, nullable=True),
        Column("RS", Float, nullable=True),
        Column("SL-Z (pfx)", Float, nullable=True),
        Column("wFC/C (pi)", Float, nullable=True),
        Column("KN", Float, nullable=True),
        Column("wFC (pfx)", Float, nullable=True),
        Column("wSL", Float, nullable=True),
        Column("Strikes", Float, nullable=True),
        Column("GB/FB", Float, nullable=True),
        Column("RAR", Float, nullable=True),
        Column("wSI (pfx)", Float, nullable=True),
        Column("FS-X (pfx)", Float, nullable=True),
        Column("SI-X (pi)", Float, nullable=True),
        Column("SL-X (pfx)", Float, nullable=True),
        Column("SB-Z (pi)", Float, nullable=True),
        Column("vFA (pi)", Float, nullable=True),
        Column("vFC (pfx)", Float, nullable=True),
        Column("FIP", Float, nullable=True),
        Column("GS", Float, nullable=True),
        Column("CS (pi)", Float, nullable=True),
        Column("Relief-IP", Float, nullable=True),
        Column("Med", Float, nullable=True),
        Column("SFv", Float, nullable=True),
        Column("H", Float, nullable=True),
        Column("SB (pi)", Float, nullable=True),
        Column("L", Float, nullable=True),
        Column("KN (pfx)", Float, nullable=True),
        Column("wFA/C (pfx)", Float, nullable=True),
        Column("FO (pfx)", Float, nullable=True),
        Column("GB", Float, nullable=True),
        Column("Swing (pfx)", Float, nullable=True),
        Column("vEP (pfx)", Float, nullable=True),
        Column("wCH (pfx)", Float, nullable=True),
        Column("wKN/C (pfx)", Float, nullable=True),
        Column("vFT (pfx)", Float, nullable=True),
        Column("FA-Z (pi)", Float, nullable=True),
        Column("SC (pfx)", Float, nullable=True),
        Column("CH-Z (pi)", Float, nullable=True),
        Column("CH (pi)", Float, nullable=True),
        Column("wCT", Float, nullable=True),
        Column("FDP-Wins", Float, nullable=True),
        Column("FT (pfx)", Float, nullable=True),
        Column("KN (pi)", Float, nullable=True),
        Column("ERA-", Float, nullable=True),
        Column("wKN/C", Float, nullable=True),
        Column("BUH", Float, nullable=True),
        Column("wCB", Float, nullable=True),
        Column("wFC/C (pfx)", Float, nullable=True),
        Column("Z-Contact (pfx)", Float, nullable=True),
        Column("CHv", Float, nullable=True),
        Column("CH-X (pfx)", Float, nullable=True),
        Column("KNv", Float, nullable=True),
        Column("wCH", Float, nullable=True),
        Column("wCB/C", Float, nullable=True),
        Column("SL-X (pi)", Float, nullable=True),
        Column("ShO", Float, nullable=True),
        Column("vCS (pi)", Float, nullable=True),
        Column("SIERA", Float, nullable=True),
        Column("Pace (pi)", Float, nullable=True),
        Column("FB", Float, nullable=True),
        Column("CB", Float, nullable=True),
        Column("HR", Float, nullable=True),
        Column("FA (pi)", Float, nullable=True),
        Column("BS", Float, nullable=True),
        Column("wFB/C", Float, nullable=True),
        Column("KC (pfx)", Float, nullable=True),
        Column("tERA", Float, nullable=True),
        Column("EP-Z (pfx)", Float, nullable=True),
        Column("K/9", Float, nullable=True),
        Column("FC (pi)", Float, nullable=True),
        Column("FS-Z (pfx)", Float, nullable=True),
        Column("wSC/C (pfx)", Float, nullable=True),
        Column("IFH", Float, nullable=True),
        Column("EP-X (pfx)", Float, nullable=True),
        Column("EP (pfx)", Float, nullable=True),
        Column("H/9", Float, nullable=True),
        Column("wFC (pi)", Float, nullable=True),
        Column("wKN (pfx)", Float, nullable=True),
        Column("G", Float, nullable=True),
        Column("CU-X (pi)", Float, nullable=True),
        Column("Soft", Float, nullable=True),
        Column("Season", Float, nullable=True),
        Column("wEP/C (pfx)", Float, nullable=True),
        Column("vSL (pi)", Float, nullable=True),
        Column("Hard", Float, nullable=True),
        Column("SwStr", Float, nullable=True),
        Column("FS (pfx)", Float, nullable=True),
        Column("kwERA", Float, nullable=True),
        Column("BUH", Float, nullable=True),
        Column("wFT (pfx)", Float, nullable=True),
        Column("vCU (pi)", Float, nullable=True),
        Column("wSB/C (pi)", Float, nullable=True),
        Column("LOB-Wins", Float, nullable=True),
        Column("HR/FB", Float, nullable=True),
        Column("SI-Z (pi)", Float, nullable=True),
        Column("wXX (pi)", Float, nullable=True),
        Column("SC-X (pfx)", Float, nullable=True),
        Column("wCS (pi)", Float, nullable=True),
        Column("Age Rng", String(512), nullable=True),
        Column("SL (pi)", Float, nullable=True),
        Column("CS-X (pi)", Float, nullable=True),
        Column("wSI/C (pfx)", Float, nullable=True),
        Column("wCU (pi)", Float, nullable=True),
        Column("wFS/C (pfx)", Float, nullable=True),
        Column("wEP (pfx)", Float, nullable=True),
        Column("LD", Float, nullable=True),
        Column("Clutch", Float, nullable=True),
        Column("Dollars", String(512), nullable=True),
        Column("wSF/C", Float, nullable=True),
        Column("wFS/C (pi)", Float, nullable=True),
        Column("RS/9", Float, nullable=True),
        Column("vFA (pfx)", Float, nullable=True),
        Column("CBv", Float, nullable=True),
        Column("Swing", Float, nullable=True),
        Column("W", Float, nullable=True),
        Column("O-Swing (pfx)", Float, nullable=True),
        Column("wSL (pi)", Float, nullable=True),
        Column("xFIP", Float, nullable=True),
        Column("FO-Z (pfx)", Float, nullable=True),
        Column("ER", Float, nullable=True),
        Column("SI-Z (pfx)", Float, nullable=True),
        Column("MD", Float, nullable=True),
        Column("GB", Float, nullable=True),
        Column("FC-X (pfx)", Float, nullable=True),
        Column("Z-Swing (pi)", Float, nullable=True),
        Column("wSF", Float, nullable=True),
        Column("vKN (pi)", Float, nullable=True),
        Column("HR/9", Float, nullable=True),
        Column("CH (pfx)", Float, nullable=True),
        Column("vSL (pfx)", Float, nullable=True),
        Column("wSB (pi)", Float, nullable=True),
        Column("FA-Z (pfx)", Float, nullable=True),
        Column("Pull", Float, nullable=True),
        Column("Z-Swing (pfx)", Float, nullable=True),
        Column("FA (pfx)", Float, nullable=True),
        Column("AVG", Float, nullable=True),
        Column("wFS (pfx)", Float, nullable=True),
        Column("FIP-", Float, nullable=True),
        Column("K/BB", Float, nullable=True),
        Column("TBF", Float, nullable=True),
        Column("SI-X (pfx)", Float, nullable=True),
        Column("wSI/C (pi)", Float, nullable=True),
        Column("XX", Float, nullable=True),
        Column("K", Float, nullable=True),
        Column("F-Strike", Float, nullable=True),
        Column("REW", Float, nullable=True),
        Column("vFO (pfx)", Float, nullable=True),
        Column("FB", Float, nullable=True),
        Column("WPA/LI", Float, nullable=True),
        Column("SL-Z (pi)", Float, nullable=True),
        Column("FC-X (pi)", Float, nullable=True),
        Column("wSI (pi)", Float, nullable=True),
        Column("CU-Z (pfx)", Float, nullable=True),
        Column("XX-X (pi)", Float, nullable=True),
        Column("Contact (pfx)", Float, nullable=True),
        Column("CTv", Float, nullable=True),
        Column("FS-Z (pi)", Float, nullable=True),
        Column("BABIP", Float, nullable=True),
        Column("wFB", Float, nullable=True),
        Column("CH-X (pi)", Float, nullable=True),
        Column("wCH/C", Float, nullable=True),
        Column("Pitches", Float, nullable=True),
        Column("KN-X (pfx)", Float, nullable=True),
        Column("RE24", Float, nullable=True),
        Column("wKN/C (pi)", Float, nullable=True),
        Column("wSL/C (pi)", Float, nullable=True),
        Column("SC-Z (pfx)", Float, nullable=True),
        Column("vXX (pi)", Float, nullable=True),
        Column("Pace", Float, nullable=True),
        Column("KN-X (pi)", Float, nullable=True),
        Column("WPA", Float, nullable=True),
        Column("CU-X (pfx)", Float, nullable=True),
        Column("wFS (pi)", Float, nullable=True),
        Column("gmLI", Float, nullable=True),
        Column("Balls", Float, nullable=True),
        Column("Swing (pi)", Float, nullable=True),
        Column("FBv", Float, nullable=True),
        Column("KC-Z (pfx)", Float, nullable=True),
        Column("CG", Float, nullable=True),
        Column("XX (pi)", Float, nullable=True),
        Column("wFA (pfx)", Float, nullable=True),
        Column("wCT/C", Float, nullable=True),
        Column("R", Float, nullable=True),
        Column("wCU/C (pi)", Float, nullable=True),
        Column("O-Swing", Float, nullable=True),
        Column("Starting", Float, nullable=True),
        Column("WAR", Float, nullable=True),
        Column("WHIP", Float, nullable=True),
        Column("wXX/C (pi)", Float, nullable=True),
        Column("LOB", Float, nullable=True),
        Column("CU-Z (pi)", Float, nullable=True),
        Column("wKN (pi)", Float, nullable=True),
        Column("BIP-Wins", Float, nullable=True),
        Column("-WPA", Float, nullable=True),
        Column("wFA (pi)", Float, nullable=True),
        Column("SV", Float, nullable=True),
        Column("wFO/C (pfx)", Float, nullable=True),
        Column("CT", Float, nullable=True),
        Column("vFC (pi)", Float, nullable=True),
        Column("IFFB", Float, nullable=True),
        Column("SO", Float, nullable=True),
        Column("Cent", Float, nullable=True),
        Column("Start-IP", Float, nullable=True),
        Column("FS-X (pi)", Float, nullable=True),
        Column("O-Swing (pi)", Float, nullable=True),
        Column("XX-Z (pi)", Float, nullable=True),
        Column("CS-Z (pi)", Float, nullable=True),
        Column("SL (pfx)", Float, nullable=True),
        Column("O-Contact (pi)", Float, nullable=True),
        Column("SD", Float, nullable=True),
        Column("wCS/C (pi)", Float, nullable=True),
        Column("vKN (pfx)", Float, nullable=True),
        Column("Relieving", Float, nullable=True),
        Column("FA-X (pfx)", Float, nullable=True),
        Column("IBB", Float, nullable=True),
        Column("Zone (pi)", Float, nullable=True),
        Column("vFS (pfx)", Float, nullable=True),
        Column("FO-X (pfx)", Float, nullable=True),
        Column("inLI", Float, nullable=True),
        Column("FT-X (pfx)", Float, nullable=True),
        Column("vKC (pfx)", Float, nullable=True),
        Column("FC (pfx)", Float, nullable=True),
        Column("K-BB", Float, nullable=True),
        Column("LD", Float, nullable=True),
        Column("wFA/C (pi)", Float, nullable=True),
        Column("xFIP-", Float, nullable=True),
        Column("BB", Float, nullable=True),
        Column("wFT/C (pfx)", Float, nullable=True),
        Column("Zone (pfx)", Float, nullable=True),
        Column("wSL/C (pfx)", Float, nullable=True),
        Column("wKC/C (pfx)", Float, nullable=True),
        Column("IFFB", Float, nullable=True),
        Column("Z-Contact (pi)", Float, nullable=True),
        Column("SL", Float, nullable=True),
        Column("CU (pfx)", Float, nullable=True),
        Column("IFH", Float, nullable=True),
        Column("O-Contact (pfx)", Float, nullable=True),
        Column("vCU (pfx)", Float, nullable=True),
        Column("wCU/C (pfx)", Float, nullable=True),
        Column("TTO", Float, nullable=True),
        Column("vSB (pi)", Float, nullable=True),
        Column("IP", Float, nullable=True),
        Column("RA9-WAR", Float, nullable=True),
        Column("vFS (pi)", Float, nullable=True),
        Column("wSC (pfx)", Float, nullable=True),
        Column("Z-Swing", Float, nullable=True),
        Column("O-Contact", Float, nullable=True),
        Column("CH-Z (pfx)", Float, nullable=True),
        Column("exLI", Float, nullable=True),
        Column("SB-X (pi)", Float, nullable=True),
        Column("FT-Z (pfx)", Float, nullable=True),
        Column("PO", Float, nullable=True),
        Column("vSI (pfx)", Float, nullable=True),
        Column("Z-Contact", Float, nullable=True),
        Column("CU (pi)", Float, nullable=True),
        Column("HLD", Float, nullable=True),
        Column("Contact", Float, nullable=True),
        Column("wSL/C", Float, nullable=True),
        Column("SLv", Float, nullable=True),
        Column("SI (pfx)", Float, nullable=True),
        Column("SI (pi)", Float, nullable=True),
        Column("vCH (pi)", Float, nullable=True),
        Column("wFO (pfx)", Float, nullable=True),
        Column("+WPA", Float, nullable=True),
        Column("vCH (pfx)", Float, nullable=True),
        Column("KN-Z (pi)", Float, nullable=True),
        Column("Pulls", Float, nullable=True),
        Column("Contact (pi)", Float, nullable=True),
        Column("KN-Z (pfx)", Float, nullable=True)])

    meta.create_all(pitching_engine)

    return pitching_engine


def initdb_batting(db_username, db_password, db_hostname, db_name, db_tablename):
    db_password = ":" + db_password
    engine = create_engine("mysql+mysqldb://" + db_username + db_password + "@" + db_hostname + "/" + db_name)
    meta = MetaData(bind=engine)

    table_batting = Table(db_tablename, meta,
        *[
            Column("Name", String(512), nullable=True),
            Column("Team", String(512), nullable=True),
            Column("Age", Float, nullable=True),
            Column("UN (pfx)", Float, nullable=True),
            Column("wCH (pi)", Float, nullable=True),
            Column("KC-X (pfx)", Float, nullable=True),
            Column("FC-Z (pfx)", Float, nullable=True),
            Column("BB", Float, nullable=True),
            Column("wKN", Float, nullable=True),
            Column("wCH/C (pfx)", Float, nullable=True),
            Column("wKC (pfx)", Float, nullable=True),
            Column("Hard", Float, nullable=True),
            Column("wCH/C (pi)", Float, nullable=True),
            Column("BU", Float, nullable=True),
            Column("FC-Z (pi)", Float, nullable=True),
            Column("Oppo", Float, nullable=True),
            Column("vSC (pfx)", Float, nullable=True),
            Column("wSL (pfx)", Float, nullable=True),
            Column("wCU (pfx)", Float, nullable=True),
            Column("SF", Float, nullable=True),
            Column("HBP", Float, nullable=True),
            Column("pLI", Float, nullable=True),
            Column("FA-X (pi)", Float, nullable=True),
            Column("vSI (pi)", Float, nullable=True),
            Column("vFA (pfx)", Float, nullable=True),
            Column("FS (pi)", Float, nullable=True),
            Column("CH", Float, nullable=True),
            Column("Zone", Float, nullable=True),
            Column("wSF", Float, nullable=True),
            Column("SL-Z (pfx)", Float, nullable=True),
            Column("wFC/C (pi)", Float, nullable=True),
            Column("KN", Float, nullable=True),
            Column("wFC (pfx)", Float, nullable=True),
            Column("wSL", Float, nullable=True),
            Column("Strikes", Float, nullable=True),
            Column("GB/FB", Float, nullable=True),
            Column("wFT (pfx)", Float, nullable=True),
            Column("RAR", Float, nullable=True),
            Column("wSI (pfx)", Float, nullable=True),
            Column("FS-X (pfx)", Float, nullable=True),
            Column("SI-X (pi)", Float, nullable=True),
            Column("SL-X (pfx)", Float, nullable=True),
            Column("SB-Z (pi)", Float, nullable=True),
            Column("vFA (pi)", Float, nullable=True),
            Column("vFC (pfx)", Float, nullable=True),
            Column("Bat", Float, nullable=True),
            Column("CS (pi)", Float, nullable=True),
            Column("wFA/C (pi)", Float, nullable=True),
            Column("Med", Float, nullable=True),
            Column("SFv", Float, nullable=True),
            Column("H", Float, nullable=True),
            Column("Def", Float, nullable=True),
            Column("KN (pfx)", Float, nullable=True),
            Column("SB (pi)", Float, nullable=True),
            Column("wFA/C (pfx)", Float, nullable=True),
            Column("FO (pfx)", Float, nullable=True),
            Column("GB", Float, nullable=True),
            Column("2B", Float, nullable=True),
            Column("Swing (pfx)", Float, nullable=True),
            Column("vEP (pfx)", Float, nullable=True),
            Column("wCH (pfx)", Float, nullable=True),
            Column("vFT (pfx)", Float, nullable=True),
            Column("FA-Z (pi)", Float, nullable=True),
            Column("CU-Z (pi)", Float, nullable=True),
            Column("CH-Z (pi)", Float, nullable=True),
            Column("CH (pi)", Float, nullable=True),
            Column("wCT", Float, nullable=True),
            Column("BB/K", Float, nullable=True),
            Column("FT (pfx)", Float, nullable=True),
            Column("KN (pi)", Float, nullable=True),
            Column("wKN/C", Float, nullable=True),
            Column("BUH", Float, nullable=True),
            Column("wCB", Float, nullable=True),
            Column("wFC/C (pfx)", Float, nullable=True),
            Column("Z-Contact (pfx)", Float, nullable=True),
            Column("CHv", Float, nullable=True),
            Column("CH-X (pfx)", Float, nullable=True),
            Column("KNv", Float, nullable=True),
            Column("wCH", Float, nullable=True),
            Column("wCB/C", Float, nullable=True),
            Column("Spd", Float, nullable=True),
            Column("SL-X (pi)", Float, nullable=True),
            Column("vCS (pi)", Float, nullable=True),
            Column("FB", Float, nullable=True),
            Column("CB", Float, nullable=True),
            Column("HR", Float, nullable=True),
            Column("Rep", Float, nullable=True),
            Column("wFB/C", Float, nullable=True),
            Column("KC (pfx)", Float, nullable=True),
            Column("EP-Z (pfx)", Float, nullable=True),
            Column("FC (pi)", Float, nullable=True),
            Column("FS-Z (pfx)", Float, nullable=True),
            Column("3B", Float, nullable=True),
            Column("wSC/C (pfx)", Float, nullable=True),
            Column("IFH", Float, nullable=True),
            Column("EP-X (pfx)", Float, nullable=True),
            Column("EP (pfx)", Float, nullable=True),
            Column("wCH/C", Float, nullable=True),
            Column("wFC (pi)", Float, nullable=True),
            Column("wKN (pfx)", Float, nullable=True),
            Column("G", Float, nullable=True),
            Column("CU-X (pi)", Float, nullable=True),
            Column("Soft", Float, nullable=True),
            Column("Season", Float, nullable=True),
            Column("wEP/C (pfx)", Float, nullable=True),
            Column("vSL (pi)", Float, nullable=True),
            Column("BABIP", Float, nullable=True),
            Column("SwStr", Float, nullable=True),
            Column("wRC+", Float, nullable=True),
            Column("FS (pfx)", Float, nullable=True),
            Column("BUH", Float, nullable=True),
            Column("PA", Float, nullable=True),
            Column("vCU (pi)", Float, nullable=True),
            Column("wSB/C (pi)", Float, nullable=True),
            Column("HR/FB", Float, nullable=True),
            Column("SI-Z (pi)", Float, nullable=True),
            Column("PH", Float, nullable=True),
            Column("wXX (pi)", Float, nullable=True),
            Column("SC-X (pfx)", Float, nullable=True),
            Column("wCS (pi)", Float, nullable=True),
            Column("Age Rng", String(512), nullable=True),
            Column("SL (pi)", Float, nullable=True),
            Column("CS-X (pi)", Float, nullable=True),
            Column("wSI/C (pfx)", Float, nullable=True),
            Column("wCU (pi)", Float, nullable=True),
            Column("wFS/C (pfx)", Float, nullable=True),
            Column("LD", Float, nullable=True),
            Column("Clutch", Float, nullable=True),
            Column("FS-Z (pi)", Float, nullable=True),
            Column("wSF/C", Float, nullable=True),
            Column("wFS/C (pi)", Float, nullable=True),
            Column("Pace", Float, nullable=True),
            Column("wSB", Float, nullable=True),
            Column("CBv", Float, nullable=True),
            Column("Swing", Float, nullable=True),
            Column("wCU/C (pi)", Float, nullable=True),
            Column("O-Swing (pfx)", Float, nullable=True),
            Column("wSL (pi)", Float, nullable=True),
            Column("KN-X (pfx)", Float, nullable=True),
            Column("FO-Z (pfx)", Float, nullable=True),
            Column("SI-Z (pfx)", Float, nullable=True),
            Column("phLI", Float, nullable=True),
            Column("GB", Float, nullable=True),
            Column("wRC", Float, nullable=True),
            Column("OPS", Float, nullable=True),
            Column("WAR", Float, nullable=True),
            Column("vKN (pfx)", Float, nullable=True),
            Column("TTO", Float, nullable=True),
            Column("vKN (pi)", Float, nullable=True),
            Column("wKN/C (pfx)", Float, nullable=True),
            Column("CH (pfx)", Float, nullable=True),
            Column("vSL (pfx)", Float, nullable=True),
            Column("wGDP", Float, nullable=True),
            Column("FA-Z (pfx)", Float, nullable=True),
            Column("Pull", Float, nullable=True),
            Column("Z-Swing (pfx)", Float, nullable=True),
            Column("FA (pfx)", Float, nullable=True),
            Column("IFFB", Float, nullable=True),
            Column("wFS (pfx)", Float, nullable=True),
            Column("FA (pi)", Float, nullable=True),
            Column("wKN (pi)", Float, nullable=True),
            Column("SC (pfx)", Float, nullable=True),
            Column("FS-X (pi)", Float, nullable=True),
            Column("SI-X (pfx)", Float, nullable=True),
            Column("wSI/C (pi)", Float, nullable=True),
            Column("XX", Float, nullable=True),
            Column("K", Float, nullable=True),
            Column("wCS/C (pi)", Float, nullable=True),
            Column("F-Strike", Float, nullable=True),
            Column("REW", Float, nullable=True),
            Column("vFO (pfx)", Float, nullable=True),
            Column("FB", Float, nullable=True),
            Column("1B", Float, nullable=True),
            Column("ISO", Float, nullable=True),
            Column("WPA/LI", Float, nullable=True),
            Column("SL-Z (pi)", Float, nullable=True),
            Column("FC-X (pi)", Float, nullable=True),
            Column("wSI (pi)", Float, nullable=True),
            Column("CU-Z (pfx)", Float, nullable=True),
            Column("XX-X (pi)", Float, nullable=True),
            Column("Contact (pfx)", Float, nullable=True),
            Column("CTv", Float, nullable=True),
            Column("PO", Float, nullable=True),
            Column("wOBA", Float, nullable=True),
            Column("wFB", Float, nullable=True),
            Column("CH-X (pi)", Float, nullable=True),
            Column("BB", Float, nullable=True),
            Column("Pitches", Float, nullable=True),
            Column("vXX (pi)", Float, nullable=True),
            Column("RE24", Float, nullable=True),
            Column("wKN/C (pi)", Float, nullable=True),
            Column("wSL/C (pi)", Float, nullable=True),
            Column("SC-Z (pfx)", Float, nullable=True),
            Column("FB (Pitch)", Float, nullable=True),
            Column("KN-X (pi)", Float, nullable=True),
            Column("WPA", Float, nullable=True),
            Column("CU-X (pfx)", Float, nullable=True),
            Column("wFS (pi)", Float, nullable=True),
            Column("FA-X (pfx)", Float, nullable=True),
            Column("Balls", Float, nullable=True),
            Column("Swing (pi)", Float, nullable=True),
            Column("FBv", Float, nullable=True),
            Column("KC-Z (pfx)", Float, nullable=True),
            Column("Z-Swing (pi)", Float, nullable=True),
            Column("XX (pi)", Float, nullable=True),
            Column("wFA (pfx)", Float, nullable=True),
            Column("wCT/C", Float, nullable=True),
            Column("R", Float, nullable=True),
            Column("CS", Float, nullable=True),
            Column("O-Swing", Float, nullable=True),
            Column("Fld", Float, nullable=True),
            Column("OBP", Float, nullable=True),
            Column("wXX/C (pi)", Float, nullable=True),
            Column("GDP", Float, nullable=True),
            Column("-WPA", Float, nullable=True),
            Column("wFA (pi)", Float, nullable=True),
            Column("FC-X (pfx)", Float, nullable=True),
            Column("wFO/C (pfx)", Float, nullable=True),
            Column("CT", Float, nullable=True),
            Column("vFC (pi)", Float, nullable=True),
            Column("SH", Float, nullable=True),
            Column("SO", Float, nullable=True),
            Column("Cent", Float, nullable=True),
            Column("wEP (pfx)", Float, nullable=True),
            Column("wSL/C", Float, nullable=True),
            Column("O-Swing (pi)", Float, nullable=True),
            Column("SB", Float, nullable=True),
            Column("CS-Z (pi)", Float, nullable=True),
            Column("SL (pfx)", Float, nullable=True),
            Column("SF", Float, nullable=True),
            Column("O-Contact (pi)", Float, nullable=True),
            Column("Zone (pi)", Float, nullable=True),
            Column("Lg", Float, nullable=True),
            Column("vSB (pi)", Float, nullable=True),
            Column("IBB", Float, nullable=True),
            Column("BsR", Float, nullable=True),
            Column("SI (pi)", Float, nullable=True),
            Column("vFS (pfx)", Float, nullable=True),
            Column("FO-X (pfx)", Float, nullable=True),
            Column("XX-Z (pi)", Float, nullable=True),
            Column("FT-X (pfx)", Float, nullable=True),
            Column("wSB (pi)", Float, nullable=True),
            Column("vKC (pfx)", Float, nullable=True),
            Column("FC (pfx)", Float, nullable=True),
            Column("LD", Float, nullable=True),
            Column("UBR", Float, nullable=True),
            Column("wFT/C (pfx)", Float, nullable=True),
            Column("Zone (pfx)", Float, nullable=True),
            Column("wSL/C (pfx)", Float, nullable=True),
            Column("wKC/C (pfx)", Float, nullable=True),
            Column("IFFB", Float, nullable=True),
            Column("Z-Contact (pi)", Float, nullable=True),
            Column("SL", Float, nullable=True),
            Column("CU (pfx)", Float, nullable=True),
            Column("IFH", Float, nullable=True),
            Column("O-Contact (pfx)", Float, nullable=True),
            Column("vCU (pfx)", Float, nullable=True),
            Column("wCU/C (pfx)", Float, nullable=True),
            Column("AB", Float, nullable=True),
            Column("Off", Float, nullable=True),
            Column("Dol", String(512), nullable=True),
            Column("Pace (pi)", Float, nullable=True),
            Column("vFS (pi)", Float, nullable=True),
            Column("wSC (pfx)", Float, nullable=True),
            Column("Z-Swing", Float, nullable=True),
            Column("O-Contact", Float, nullable=True),
            Column("CH-Z (pfx)", Float, nullable=True),
            Column("RBI", Float, nullable=True),
            Column("SB-X (pi)", Float, nullable=True),
            Column("FT-Z (pfx)", Float, nullable=True),
            Column("SLG", Float, nullable=True),
            Column("vSI (pfx)", Float, nullable=True),
            Column("Z-Contact", Float, nullable=True),
            Column("CU (pi)", Float, nullable=True),
            Column("AVG", Float, nullable=True),
            Column("Contact", Float, nullable=True),
            Column("wRAA", Float, nullable=True),
            Column("SLv", Float, nullable=True),
            Column("SI (pfx)", Float, nullable=True),
            Column("Pos", Float, nullable=True),
            Column("vCH (pi)", Float, nullable=True),
            Column("wFO (pfx)", Float, nullable=True),
            Column("+WPA", Float, nullable=True),
            Column("vCH (pfx)", Float, nullable=True),
            Column("KN-Z (pi)", Float, nullable=True),
            Column("Contact (pi)", Float, nullable=True),
            Column("KN-Z (pfx)", Float, nullable=True)])

    meta.create_all(engine)

    return engine


def initdb_teambatting(db_username, db_password, db_hostname, db_name, db_tablename):
    db_password = ":" + <PASSWORD>
    engine = create_engine("mysql+mysqldb://" + db_username + db_password + "@" + db_hostname + "/" + db_name)
    meta = MetaData(bind=engine)

    table_teambatting = Table(db_tablename, meta,
        *[
            Column("Team", String(512), nullable=True),
            Column("Season", Float, nullable=True),
            Column("SLG", Float, nullable=True),
            Column("Off", Float, nullable=True),
            Column("PA", Float, nullable=True),
            Column("G", Float, nullable=True),
            Column("wOBA", Float, nullable=True),
            Column("HR", Float, nullable=True),
            Column("BB", Float, nullable=True),
            Column("BsR", Float, nullable=True),
            Column("WAR", Float, nullable=True),
            Column("BABIP", Float, nullable=True),
            Column("K", Float, nullable=True),
            Column("R", Float, nullable=True),
            Column("ISO", Float, nullable=True),
            Column("Def", Float, nullable=True),
            Column("RBI", Float, nullable=True),
            Column("SB", Float, nullable=True),
            Column("AVG", Float, nullable=True),
            Column("wRC+", Float, nullable=True),
            Column("OBP", Float, nullable=True)])

    meta.create_all(engine)

    return engine


def initdb_teampitching(db_username, db_password, db_hostname, db_name, db_tablename):
    db_password = ":" + db_password
    engine = create_engine("mysql+mysqldb://" + db_username + db_password + "@" + db_hostname + "/" + db_name)
    meta = MetaData(bind=engine)

    table_teampitching = Table(db_tablename, meta,
        *[
            Column("Team", String(512), nullable=True),
            Column("Season", Float, nullable=True),
            Column("SLG", Float, nullable=True),
            Column("Off", Float, nullable=True),
            Column("PA", Float, nullable=True),
            Column("G", Float, nullable=True),
            Column("wOBA", Float, nullable=True),
            Column("HR", Float, nullable=True),
            Column("BB", Float, nullable=True),
            Column("BsR", Float, nullable=True),
            Column("WAR", Float, nullable=True),
            Column("BABIP", Float, nullable=True),
            Column("K", Float, nullable=True),
            Column("R", Float, nullable=True),
            Column("ISO", Float, nullable=True),
            Column("Def", Float, nullable=True),
            Column("RBI", Float, nullable=True),
            Column("SB", Float, nullable=True),
            Column("AVG", Float, nullable=True),
            Column("wRC+", Float, nullable=True),
            Column("OBP", Float, nullable=True)])

    meta.create_all(engine)

    return engine