base.py 文件源码

python
阅读 20 收藏 0 点赞 0 评论 0

项目:marcotti-mls 作者: soccermetrics 项目源码 文件源码
def create_seasons(session, start_yr, end_yr):
    """
    Adds Years and calendar and European Seasons records to database.

    :param session: Transaction session object.
    :param start_yr: Start of year interval.
    :param end_yr: End of year interval, inclusive.
    """
    def exists(model, **conditions):
        return session.query(model).filter_by(**conditions).count() != 0

    logger.info("Creating Years between {0} and {1}...".format(start_yr, end_yr))

    year_range = range(start_yr, end_yr+1)
    for yr in year_range:
        if not exists(Years, yr=yr):
            session.add(Years(yr=yr))
    session.commit()
    session.flush()

    logger.info("Creating Seasons...")

    # insert calendar year season record
    for year in year_range:
        try:
            yr_obj = session.query(Years).filter_by(yr=year).one()
        except NoResultFound:
            logger.error("Cannot insert Season record: {} not in database".format(year))
            continue
        except MultipleResultsFound:
            logger.error("Cannot insert Season record: multiple {} records in database".format(year))
            continue
        if not exists(Seasons, start_year=yr_obj, end_year=yr_obj):
            logger.info("Creating record for {0} season".format(yr_obj.yr))
            season_record = Seasons(start_year=yr_obj, end_year=yr_obj)
            session.add(season_record)

    # insert European season record
    for start, end in zip(year_range[:-1], year_range[1:]):
        try:
            start_yr_obj = session.query(Years).filter_by(yr=start).one()
            end_yr_obj = session.query(Years).filter_by(yr=end).one()
        except NoResultFound:
            logger.error("Cannot insert Season record: {} or {} not in database".format(start, end))
            continue
        except MultipleResultsFound:
            logger.error("Cannot insert Season record: multiple {} or {} records in database".format(start, end))
            continue
        if not exists(Seasons, start_year=start_yr_obj, end_year=end_yr_obj):
            logger.info("Creating record for {0}-{1} season".format(start_yr_obj.yr, end_yr_obj.yr))
            season_record = Seasons(start_year=start_yr_obj, end_year=end_yr_obj)
            session.add(season_record)
    session.commit()
    logger.info("Season records committed to database")
    logger.info("Season creation complete.")
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号