Ejemplo n.º 1
0
class PackageDefinition(Base, HasDummy):
    __tablename__ = 'package_definitions'

    id = Column(u'pkg_def_id', INTEGER(), primary_key=True)
    deploy_type = Column(String(length=30), nullable=False)
    validation_type = Column(String(length=15), nullable=False)
    pkg_name = Column(String(length=255), nullable=False)
    name = synonym('pkg_name')
    path = Column(String(length=255), nullable=False)
    repository = Column(String(length=255), nullable=True)
    arch = Column(Enum('i386', 'x86_64', 'noarch'),
                  nullable=False,
                  server_default='noarch')
    build_type = Column(Enum(u'developer', u'hudson', u'jenkins'),
                        nullable=False,
                        server_default='jenkins')
    build_host = Column(String(length=255), nullable=False)
    env_specific = Column(BOOLEAN(), nullable=False, server_default='0')
    environment_specific = synonym('env_specific')

    created = Column(TIMESTAMP(),
                     nullable=False,
                     server_default=func.current_timestamp())

    packages = relationship(
        'Package',
        primaryjoin=("(Package.pkg_def_id == PackageDefinition.id)"
                     " & (Package.status != 'removed')"),
        passive_deletes=True,
    )

    all_packages = relationship(
        'Package',
        back_populates='package_definition',
        passive_deletes=True,
    )

    package_names = relationship(
        'PackageName',
        back_populates="package_definition",
        passive_deletes=True,
    )

    applications = relationship(
        'AppDefinition',
        secondary=lambda: Base.metadata.tables['project_package'],
        passive_deletes=True,
        back_populates='package_definitions',
        viewonly=True,
    )

    projects = relationship(
        'Project',
        secondary=lambda: Base.metadata.tables['project_package'],
        passive_deletes=True,
        back_populates='package_definitions',
        viewonly=True,
    )
Ejemplo n.º 2
0
class Run(BASE):
    __tablename__ = 'Run'

    run_id = Column(INTEGER(12),
                    primary_key=True,
                    auto_increment=True,
                    default=0)
    game_id = Column(VARCHAR(12), primary_key=True)
    year = Column(INTEGER(5))
    date = Column(DATE)
    scoring_team = Column(VARCHAR(3))
    conceding_team = Column(VARCHAR(3))
    scoring_player = Column(VARCHAR(8))
    batter = Column(VARCHAR(8))
    responsible_pitcher = Column(VARCHAR(8))
    is_earned = Column(BOOLEAN(3))
    is_team_earned = Column(BOOLEAN(3))
    is_rbi = Column(BOOLEAN(3))
    is_sp = Column(BOOLEAN(3))
    inning = Column(SMALLINT(3))
    outs = Column(TINYINT(1))
Ejemplo n.º 3
0
class Member(BaseChanges, db.Base):
    __tablename__ = 'members'
    id = Column(INTEGER(11), primary_key=True)
    first_name = Column(VARCHAR(255))
    last_name = Column(VARCHAR(255))
    address_id = Column(INTEGER(11), ForeignKey('addresses.id'))
    address = relationship('Address')
    email = Column(VARCHAR(255), unique=True)
    password = Column(VARCHAR(255))
    pw_salt = Column(VARCHAR(255))
    officer = Column(BOOLEAN())
    type = Column(VARCHAR(20))
    active = Column(BOOLEAN())
    institution_id = Column(INTEGER(11), ForeignKey('institutions.id'))
    institution = relationship('Institution', back_populates='faculty_members')
    host = relationship('Conference', uselist=False, back_populates='host')
    presentations = relationship('Presentation',
                                 secondary=member_presentations,
                                 back_populates='presenters')
    conferences = relationship('MemberConferences', back_populates='member')
    created_at = Column(DATETIME(), default=func.utc_timestamp())
    updated_at = Column(DATETIME(),
                        default=func.utc_timestamp(),
                        onupdate=func.utc_timestamp())

    def __init__(self, member_data):
        print member_data
        self.first_name = member_data['first_name']
        self.last_name = member_data['last_name']
        # self.address_id = member_data['address_id']
        self.email = member_data['email']
        self.pw_salt = member_data['salt']
        self.password = member_data['hash']
        self.officer = True if 'officer' in member_data else False
        self.active = False
        self.type = member_data['type']
        # self.institution_id = member_data['institution_id']

    def __repr__(self):
        return '<Member(id=%r,email=%r>' % (self.id, self.email)
Ejemplo n.º 4
0
class MemberConferences(BaseChanges, db.Base):
    __tablename__ = 'member_conferences'
    id = Column(INTEGER(11), primary_key=True, autoincrement=True)
    member_id = Column(INTEGER(11), ForeignKey('members.id'), primary_key=True)
    conference_id = Column(INTEGER(11),
                           ForeignKey('conferences.id'),
                           primary_key=True)
    food_pref = Column(VARCHAR(255))
    gluten_free = Column(BOOLEAN())
    days = Column(VARCHAR(255))
    member_paid = Column(BOOLEAN())
    member = relationship('Member', back_populates='conferences')
    conference = relationship('Conference', back_populates='members')

    def __init__(self, data):
        self.food_pref = data['food_pref']
        self.gluten_free = data['gluten_free']
        self.member_paid = False

    def __repr__(self):
        return "<MemberConference(id=%s, member=%s, conference=%s)>" % (
            self.id, self.member_id, self.conference_id)
Ejemplo n.º 5
0
class MemberConferences(BaseChanges, db.Base):
    __tablename__ = 'member_conferences'
    member_id = Column('member_id',
                       INTEGER(11),
                       ForeignKey('members.id'),
                       primary_key=True)
    conference_id = Column('conference_id',
                           INTEGER(11),
                           ForeignKey('conferences.id'),
                           primary_key=True)
    food_pref = Column(VARCHAR(255))
    gluten_free = Column(BOOLEAN())
    member = relationship('Member', back_populates='conferences')
    conference = relationship('Conference', back_populates='members')
Ejemplo n.º 6
0
    class Answer(Base):

        __tablename__ = 'zhihu_answers'

        q_id = Column(INTEGER(), ForeignKey('zhihu_questions.id'))
        question = relationship('Question', backref='answer')
        answer_id = Column(INTEGER(), primary_key=True)
        author_id = Column(VARCHAR(100))
        author_name = Column(NVARCHAR(20))
        author_is_advertiser = Column(BOOLEAN())
        created_time = Column(DATETIME())
        updated_time = Column(DATETIME())
        voteup_num = Column(INTEGER())
        comment_num = Column(INTEGER())
        content = Column(MEDIUMTEXT())
Ejemplo n.º 7
0
class HwChassis(Base):
    __tablename__ = 'hw_chassis'

    chassis_id = Column(u'chassis_id', INTEGER(), primary_key=True)
    vendor = Column(String(length=20))
    height = Column(u'height', INTEGER())
    width = Column(u'width', FLOAT())
    depth = Column(u'depth', FLOAT())
    model = Column(String(length=20))
    control = Column(Enum(u'digi', u'ipmi', u'libvirt', u'rlm', u'vmware'))
    virtual = Column(BOOLEAN(), nullable=False, server_default='0')
    __table_args__ = (
        UniqueConstraint(u'vendor', u'model'),
        {
            'mysql_engine': 'InnoDB',
            'mysql_charset': 'utf8',
        },
    )
Ejemplo n.º 8
0
class PackageLocation(Base):
    __tablename__ = 'package_locations'

    id = Column(u'pkgLocationID', INTEGER(), primary_key=True)
    project_type = Column(Enum(u'application', u'kafka-config', u'tagconfig'),
                          nullable=False,
                          server_default='application')
    pkg_type = Column(String(length=255), nullable=False)
    pkg_name = Column(String(length=255), nullable=False, unique=True)
    name = synonym('pkg_name')
    app_name = Column(String(length=255), nullable=False, unique=True)
    path = Column(String(length=255), nullable=False, unique=True)
    arch = Column(Enum(u'i386', u'x86_64', u'noarch'),
                  nullable=False,
                  server_default='noarch')
    build_host = Column(String(length=30), nullable=False)
    environment = Column(BOOLEAN(), nullable=False)
    app_definitions = relationship('AppDefinition',
                                   secondary='app_packages',
                                   backref='package_locations')
Ejemplo n.º 9
0
class PlateAppearance(BASE):
    __tablename__ = 'PlateAppearance'

    game_id = Column(VARCHAR(12), primary_key=True, auto_increment=False)
    year = Column(INTEGER(5), primary_key=True, auto_increment=False)
    date = Column(DATE)
    pa_id = Column(INTEGER(6),
                   primary_key=True,
                   auto_increment=True,
                   default=0)
    batter_id = Column(VARCHAR(8))
    batter_team = Column(VARCHAR(8))
    batter_hand = Column(VARCHAR(3))
    pitcher_id = Column(VARCHAR(8))
    pitcher_team = Column(VARCHAR(8))
    pitcher_hand = Column(VARCHAR(3))
    play = Column(VARCHAR(150))
    inning = Column(SMALLINT(3))
    batting_team_home = Column(BOOLEAN(3))
    outs = Column(TINYINT(1))
    balls = Column(TINYINT(1))
    strikes = Column(TINYINT(1))
    sequence = Column(VARCHAR(50))
    away_runs = Column(SMALLINT(3))
    home_runs = Column(SMALLINT(3))
    first_runner_id = Column(VARCHAR(8))
    first_dest = Column(VARCHAR(3))
    second_runner_id = Column(VARCHAR(8))
    second_dest = Column(VARCHAR(3))
    third_runner_id = Column(VARCHAR(8))
    third_dest = Column(VARCHAR(3))
    field_pos = Column(SMALLINT(3))
    lineup_pos = Column(SMALLINT(3))
    event_type = Column(SMALLINT(3))
    ab_flag = Column(BOOLEAN(3))
    pa_flag = Column(BOOLEAN(3))
    sp_flag = Column(BOOLEAN(3))
    hit_val = Column(SMALLINT(3))
    sac_bunt = Column(BOOLEAN(3))
    sac_fly = Column(BOOLEAN(3))
    outs_on_play = Column(SMALLINT(3))
    rbi = Column(SMALLINT(3))
    runs_on_play = Column(SMALLINT(3))
    first_scorer = Column(VARCHAR(8))
    second_scorer = Column(VARCHAR(8))
    third_scorer = Column(VARCHAR(8))
    fourth_scorer = Column(VARCHAR(8))
    first_runner_event = Column(VARCHAR(3))
    second_runner_event = Column(VARCHAR(3))
    third_runner_event = Column(VARCHAR(3))
    wp = Column(BOOLEAN(3))
    pb = Column(BOOLEAN(3))
    fielder_id = Column(VARCHAR(8))
    ball_type = Column(VARCHAR(1))
    bunt_flag = Column(BOOLEAN(3))
    foul_flag = Column(BOOLEAN(3))
    hit_loc = Column(SMALLINT(3))
    first_error = Column(VARCHAR(8))
    second_error = Column(VARCHAR(8))
    third_error = Column(VARCHAR(8))
    num_errors = Column(SMALLINT(3))
    batter_dest = Column(VARCHAR(3))
    first_po = Column(VARCHAR(8))
    second_po = Column(VARCHAR(8))
    third_po = Column(VARCHAR(8))
    first_ast = Column(VARCHAR(8))
    second_ast = Column(VARCHAR(8))
    third_ast = Column(VARCHAR(8))
    fourth_ast = Column(VARCHAR(8))
    fifth_ast = Column(VARCHAR(8))
    catcher = Column(VARCHAR(8))
    first_base = Column(VARCHAR(8))
    second_base = Column(VARCHAR(8))
    third_base = Column(VARCHAR(8))
    shortstop = Column(VARCHAR(8))
    left_field = Column(VARCHAR(8))
    center_field = Column(VARCHAR(8))
    right_field = Column(VARCHAR(8))
Ejemplo n.º 10
0
class Presentation(BaseChanges, db.Base):
    __tablename__ = 'presentations'
    id = Column(INTEGER(11), primary_key=True)
    title = Column(VARCHAR(255), unique=True)
    summary = Column(TEXT())
    files_url = Column(
        TEXT())  ##trying to utilize Google Drive for file upload
    approved = Column(BOOLEAN())
    duration = Column(INTEGER(2))  #time in minutes
    datetime = Column(DATETIME())
    presenters = relationship('Member',
                              secondary=member_presentations,
                              back_populates='presentations')
    conference_id = Column(INTEGER(11), ForeignKey('conferences.id'))
    conference = relationship('Conference',
                              back_populates='presentations',
                              uselist=False)
    created_at = Column(DATETIME(), default=func.utc_timestamp())
    updated_at = Column(DATETIME(),
                        default=func.utc_timestamp(),
                        onupdate=func.utc_timestamp())

    def __init__(self, present_info):
        self.title = present_info['title']
        self.summary = present_info['summary']
        self.approved = False
        self.conference_id = present_info['conference_id']
        self.duration = present_info['duration']  #time in minutes
        self.add_files(
            present_info['files']) if 'files' in present_info else None
        self.presenters.append(**present_info['presenters'])
        ##Presenters should be added in the controller

        #Check for year folder
        #	Create it if it doesn't exist
        #Create a folder for the presentation (using presentation title)
        #save folder id and place files in the folder if there are any
    def add_files(self, files):
        conference = Conference.query.get(self.conference_id)
        #check for conference year folder, create if none
        year_folder = drive.files().list(
            q="name=" + conference['year'] +
            " and mimeType='application/vnd.google-apps.folder'")
        if len(year_folder['files']) == 0:
            folder_params = {
                'mimeType': "application/vnd.google-apps.folder",
                'name': conference['year'],
                'parents': sens.drive_root_folder_id
            }
            drive.files().create(body=folder_params).execute()

        #check for presentation folder, create if none
        present_folder = drive.files().list(
            q="name=" + self.title +
            " and mimeType='application/vnd.google-apps.folder'")
        if len(present_folder['files']) == 0:
            folder_params = {
                'mimeType': "application/vnd.google-apps.folder",
                'name': self.title,
                'parents': year_folder['files'][0]['id']
            }
            drive.files().create(body=folder_params).execute()
        #Upload each file to the folder
        for file in files:
            file_data = {
                'name': file['name'],
                'parents': present_folder['files'][0]['id']
            }
            drive.files.create(body=file_data, media_body=file['file'])
        self.files_url = drive.files(
            fileId=present_folder['files'][0]['id'])['webViewLink']
Ejemplo n.º 11
0
class Model(BASE, ModelUtils):

    __tablename__ = 'model'

    # composite primary key, cid + uid + version + meta_version
    # composite foreign key, cid + uid
    cid = Column(VARCHAR(128), primary_key=True)
    uid = Column(VARCHAR(128), primary_key=True)
    meta_version = Column(INTEGER(unsigned=True, primary_key=True))

    __table_args__ = (ForeignKeyConstraint([cid, uid], [User.cid, User.uid]), {
        'mysql_engine': MYSQL_ENGINE,
        'mysql_charset': MYSQL_CHARSET,
        'mysql_collate': MYSQL_COLLATE
    })

    # models
    user = relationship('User', back_populates='models')

    maturity = Column(FLOAT(unsigned=True))

    accuracy = Column(FLOAT(unsigned=True))

    is_ready = Column(BOOLEAN())

    create_time = Column(DATETIME(), server_default=func.now(), nullable=False)

    last_update_time = Column(DATETIME(),
                              server_default=func.now(),
                              onupdate=func.now(),
                              nullable=False)

    _languages = Column(VARCHAR(2048))

    @staticmethod
    def generate_id(meta_version, user_id):
        # meta_version should refer Version
        return HashUtility.get_normalized_str_sha256(
            f'{meta_version}{user_id}')

    @staticmethod
    def verify_meta_version(meta_version):
        if meta_version not in VALID_META_VERSIONS:
            raise InvalidVersion(meta_version)

    @validates('meta_version')
    def validate_meta_version(self, _, meta_version):
        Meta.verify_version(meta_version)
        return meta_version

    @hybrid_property
    def languages(self):
        # load json string to dict if it is not None
        if not self._languages:
            return self._languages
        return json.loads(self._languages)

    @languages.setter
    def languages(self, languages):
        # dump to json string if it is not None
        if languages:
            self._languages = json.dumps(languages)
        else:
            self._languages = None

    def __init__(self,
                 cid,
                 uid,
                 meta_version,
                 *,
                 maturity=0.0,
                 accuracy=0.0,
                 is_ready=False,
                 languages=None):

        self.cid = cid
        self.uid = uid
        self.meta_version = meta_version

        self.maturity = maturity
        self.accuracy = accuracy
        self.is_ready = is_ready
        self.languages = languages

    def __repr__(self):
        return f'[\n' \
               f'<cid:{self.cid}>\n'\
               f'<uid:{self.uid}>\n'\
               f'<meta_version:{self.meta_version}>\n'\
               f'<maturity:{self.maturity}>\n'\
               f'<accuracy:{self.accuracy}>\n' \
               f'<create_time:{self.create_time}>\n' \
               f'<last_update_time:{self.last_update_time}>\n' \
               f'<languages:{self.languages}>\n' \
               f']'

    def to_dict(self):

        res_dict = self.__dict__.copy()

        # remove this key for JSON serializable
        if '_sa_instance_state' in res_dict:
            res_dict.pop('_sa_instance_state', None)

        if '_languages' in res_dict:
            if res_dict['_languages'] is not None:
                # Don't be confused with this warning
                # Sqlalchemy use @hybrid_property instead of @property for more general
                # use case (eg, filter)
                res_dict['languages'] = self.languages
            else:
                res_dict['languages'] = None

            res_dict.pop('_languages', None)

        return res_dict
Ejemplo n.º 12
0
class AppDeployment(Base):
    __tablename__ = 'app_deployments'

    id = Column(u'AppDeploymentID', INTEGER(), primary_key=True)
    deployment_id = Column(u'DeploymentID',
                           INTEGER(),
                           ForeignKey('deployments.DeploymentID',
                                      ondelete='cascade'),
                           nullable=False)
    deployment = relationship("Deployment", uselist=False)

    app_id = Column(u'AppID',
                    SMALLINT(display_width=6),
                    ForeignKey('app_definitions.AppID', ondelete='cascade'),
                    nullable=False)
    application = relationship("AppDefinition", uselist=False)
    target = synonym('application')

    package_id = Column(INTEGER(),
                        ForeignKey('packages.package_id', ondelete='cascade'),
                        nullable=False)
    package = relationship(
        "Package",
        uselist=False,
        back_populates="app_deployments",
    )

    user = Column(String(length=32), nullable=False)
    status = Column(Enum(
        'complete',
        'incomplete',
        'inprogress',
        'invalidated',
        'pending',
        'validated',
    ),
                    nullable=False)
    environment_id = Column(u'environment_id',
                            INTEGER(),
                            ForeignKey('environments.environmentID',
                                       ondelete='cascade'),
                            nullable=False)
    realized = Column(TIMESTAMP(),
                      nullable=False,
                      server_default=func.current_timestamp())
    created_at = synonym('realized')
    duration = Column(FLOAT(), nullable=False, server_default="0")
    skewed = Column(BOOLEAN(), nullable=False, server_default='0')

    environment_obj = relationship('Environment')

    __table_args__ = (UniqueConstraint(u'package_id', u'AppID',
                                       u'environment_id', u'realized'), )

    @hybrid_property
    def env(self):
        return self.environment_obj.env

    @env.expression
    def env(cls):
        return select([Environment.env]).\
            where(Environment.id == cls.environment_id).correlate(cls).\
            label('env')

    @hybrid_property
    def environment(self):
        return self.environment_obj.environment

    @environment.expression
    def environment(cls):
        return select([Environment.environment]).\
            where(Environment.id == cls.environment_id).correlate(cls).\
            label('environment')

    @hybrid_property
    def needs_validation(self):
        """
        Complete and incomplete deployments require validation
        """
        return self.status in ('complete', 'incomplete')

    @needs_validation.expression
    def needs_validation(cls):
        return cls.status.in_(['complete', 'incomplete'])
Ejemplo n.º 13
0
class Paper(Base):
    __tablename__ = 'paper'

    id = Column(INTEGER(unsigned=True),
                primary_key=True,
                autoincrement=True,
                nullable=False)
    id_scp = Column(BIGINT(unsigned=True), nullable=False, unique=True)
    eid = Column(VARCHAR(45), nullable=False, unique=True)
    title = Column(VARCHAR(512), nullable=False)
    type = Column(VARCHAR(2), nullable=False)
    type_description = Column(VARCHAR(45), nullable=True)
    abstract = Column(TEXT(), nullable=True)
    total_author = Column(SMALLINT(unsigned=True), nullable=False)
    open_access = Column(BOOLEAN(create_constraint=True,
                                 name='open_access_check'),
                         nullable=False)
    cited_cnt = Column(SMALLINT(unsigned=True), nullable=True)
    url = Column(VARCHAR(256), nullable=False, unique=True)
    article_no = Column(VARCHAR(45), nullable=True)
    date = Column(DATE(), nullable=False)
    fund_id = Column(BIGINT(unsigned=True),
                     ForeignKey('fund.id'),
                     nullable=True)
    source_id = Column(INTEGER(unsigned=True),
                       ForeignKey('source.id'),
                       nullable=True)
    doi = Column(VARCHAR(256), nullable=True, unique=True)
    volume = Column(VARCHAR(45), nullable=True)
    issue = Column(VARCHAR(45), nullable=True)
    page_range = Column(VARCHAR(45), nullable=True)
    retrieval_time = Column(DATETIME(), nullable=False)
    create_time = Column(DATETIME(),
                         nullable=False,
                         server_default=text('CURRENT_TIMESTAMP'))
    update_time = Column(
        DATETIME(),
        nullable=False,
        server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'))

    # Relationships
    fund = relationship('Fund', back_populates='papers')
    source = relationship('Source', back_populates='papers')
    keywords = relationship('Keyword',
                            secondary=Paper_Keyword,
                            back_populates='papers')
    authors = relationship('Paper_Author', back_populates='paper')

    def __init__(
        self,
        id_scp,
        eid,
        title,
        type,
        total_author,
        open_access,
        cited_cnt,
        url,
        date,
        retrieval_time,
        type_description=None,
        abstract=None,
        article_no=None,
        fund_id=None,
        source_id=None,
        doi=None,
        volume=None,
        issue=None,
        page_range=None,
        create_time=None,
        update_time=None,
    ):
        self.id_scp = id_scp
        self.eid = eid
        self.title = title
        self.type = type
        self.type_description = type_description
        self.abstract = abstract
        self.total_author = total_author
        self.open_access = open_access
        self.cited_cnt = cited_cnt
        self.url = url
        self.article_no = article_no
        self.fund_id = fund_id
        self.source_id = source_id
        self.doi = doi
        self.volume = volume
        self.issue = issue
        self.date = date
        self.page_range = page_range
        self.retrieval_time = retrieval_time
        self.create_time = create_time
        self.update_time = update_time

    def __repr__(self):
        max_len = 50
        if len(self.title) <= max_len:
            return f'{self.id_scp}: {self.title}; DOI: {self.doi}'
        return f'{self.id_scp}: {self.title[:max_len-3]}...; DOI: {self.doi}'

    def get_year(self):
        return self.date.year
Ejemplo n.º 14
0
class Game(BASE):
    __tablename__ = 'Game'

    game_id = Column(VARCHAR(12), primary_key=True, auto_increment=False)
    year = Column(INTEGER(5))
    date = Column(DATE)
    home_team = Column(VARCHAR(3))
    home_team_runs = Column(SMALLINT(3))
    away_team = Column(VARCHAR(3))
    away_team_runs = Column(SMALLINT(3))
    winning_team = Column(VARCHAR(3))
    losing_team = Column(VARCHAR(3))
    innings = Column(SMALLINT(3))
    site = Column(VARCHAR(5))
    start_time = Column(VARCHAR(10))
    is_day = Column(BOOLEAN(3))
    temp = Column(SMALLINT(3))
    wind_dir = Column(VARCHAR(10))
    wind_speed = Column(SMALLINT(3))
    field_cond = Column(VARCHAR(20))
    precip = Column(VARCHAR(15))
    sky = Column(VARCHAR(15))
    time_of_game = Column(INTEGER(5))
    attendance = Column(INTEGER(6))
    winning_pitcher = Column(VARCHAR(8))
    losing_pitcher = Column(VARCHAR(8))
    save = Column(VARCHAR(8))
    starting_pitcher_home = Column(VARCHAR(8))
    starting_catcher_home = Column(VARCHAR(8))
    starting_first_home = Column(VARCHAR(8))
    starting_second_home = Column(VARCHAR(8))
    starting_third_home = Column(VARCHAR(8))
    starting_short_home = Column(VARCHAR(8))
    starting_left_home = Column(VARCHAR(8))
    starting_center_home = Column(VARCHAR(8))
    starting_right_home = Column(VARCHAR(8))
    starting_pitcher_away = Column(VARCHAR(8))
    starting_catcher_away = Column(VARCHAR(8))
    starting_first_away = Column(VARCHAR(8))
    starting_second_away = Column(VARCHAR(8))
    starting_third_away = Column(VARCHAR(8))
    starting_short_away = Column(VARCHAR(8))
    starting_left_away = Column(VARCHAR(8))
    starting_center_away = Column(VARCHAR(8))
    starting_right_away = Column(VARCHAR(8))
    starting_dh_home = Column(VARCHAR(8))
    starting_dh_away = Column(VARCHAR(8))
    home_team_er = Column(SMALLINT(3))
    away_team_er = Column(SMALLINT(3))
    starting_pitcher_home_er = Column(SMALLINT(3))
    starting_pitcher_home_r = Column(SMALLINT(3))
    starting_pitcher_away_er = Column(SMALLINT(3))
    starting_pitcher_away_r = Column(SMALLINT(3))
    relief_pitcher1 = Column(VARCHAR(8))
    relief_pitcher1_er = Column(SMALLINT(3))
    relief_pitcher1_r = Column(SMALLINT(3))
    relief_pitcher2 = Column(VARCHAR(8))
    relief_pitcher2_er = Column(SMALLINT(3))
    relief_pitcher2_r = Column(SMALLINT(3))
    relief_pitcher3 = Column(VARCHAR(8))
    relief_pitcher3_er = Column(SMALLINT(3))
    relief_pitcher3_r = Column(SMALLINT(3))
    relief_pitcher4 = Column(VARCHAR(8))
    relief_pitcher4_er = Column(SMALLINT(3))
    relief_pitcher4_r = Column(SMALLINT(3))
    relief_pitcher5 = Column(VARCHAR(8))
    relief_pitcher5_er = Column(SMALLINT(3))
    relief_pitcher5_r = Column(SMALLINT(3))
    relief_pitcher6 = Column(VARCHAR(8))
    relief_pitcher6_er = Column(SMALLINT(3))
    relief_pitcher6_r = Column(SMALLINT(3))
    relief_pitcher7 = Column(VARCHAR(8))
    relief_pitcher7_er = Column(SMALLINT(3))
    relief_pitcher7_r = Column(SMALLINT(3))
    relief_pitcher8 = Column(VARCHAR(8))
    relief_pitcher8_er = Column(SMALLINT(3))
    relief_pitcher8_r = Column(SMALLINT(3))
    relief_pitcher9 = Column(VARCHAR(8))
    relief_pitcher9_er = Column(SMALLINT(3))
    relief_pitcher9_r = Column(SMALLINT(3))
    relief_pitcher10 = Column(VARCHAR(8))
    relief_pitcher10_er = Column(SMALLINT(3))
    relief_pitcher10_r = Column(SMALLINT(3))
    relief_pitcher11 = Column(VARCHAR(8))
    relief_pitcher11_er = Column(SMALLINT(3))
    relief_pitcher11_r = Column(SMALLINT(3))
    relief_pitcher12 = Column(VARCHAR(8))
    relief_pitcher12_er = Column(SMALLINT(3))
    relief_pitcher12_r = Column(SMALLINT(3))
    relief_pitcher13 = Column(VARCHAR(8))
    relief_pitcher13_er = Column(SMALLINT(3))
    relief_pitcher13_r = Column(SMALLINT(3))
    relief_pitcher14 = Column(VARCHAR(8))
    relief_pitcher14_er = Column(SMALLINT(3))
    relief_pitcher14_r = Column(SMALLINT(3))
    relief_pitcher15 = Column(VARCHAR(8))
    relief_pitcher15_er = Column(SMALLINT(3))
    relief_pitcher15_r = Column(SMALLINT(3))
    relief_pitcher16 = Column(VARCHAR(8))
    relief_pitcher16_er = Column(SMALLINT(3))
    relief_pitcher16_r = Column(SMALLINT(3))
    relief_pitcher17 = Column(VARCHAR(8))
    relief_pitcher17_er = Column(SMALLINT(3))
    relief_pitcher17_r = Column(SMALLINT(3))
    relief_pitcher18 = Column(VARCHAR(8))
    relief_pitcher18_er = Column(SMALLINT(3))
    relief_pitcher18_r = Column(SMALLINT(3))
    relief_pitcher19 = Column(VARCHAR(8))
    relief_pitcher19_er = Column(SMALLINT(3))
    relief_pitcher19_r = Column(SMALLINT(3))