Python 操作列表互换数据,待优化

    @classmethod
    def del_team_level(cls, items):
        '''
        删除团队等级
        :param items:
        :return:
        '''
        team_id = items.get('team_id')
        level_list = json.loads(items.get('level_list'))
        if not (team_id and level_list):
            return False, '参数异常'
        level_model = team_level_model
        first_level_id = level_list[0]
        first_level_info = level_model.find_one(
            'select level_number,upgrade_lower_score from team_level '
            'where level_id = ? ', first_level_id
        )
        level_model.remove('where level_id in ?', level_list)
        resource_model = team_level_resource_model
        # 删除关联资源数据
        resource_model.remove('where level_id in ? ', level_list)
        level_number = first_level_info.get('level_number')
        upgrade_lower_score = first_level_info.get('upgrade_lower_score')
        level_info = level_model.find(
            'select level_id,upgrade_high_score from team_level '
            'where level_number >= ? order by level_number asc ', level_number
        )
        level_count = len(level_info)
        if level_count:
            upgrade_score = [upgrade_lower_score]
            upgrade_score.extend([l.get('upgrade_high_score') for l in level_info][:-1])
            for i in range(level_number, level_count + level_number):
                num = i - level_number
                level_model.update_kw('level_id=?', level_info[num].get('level_id'),
                                      level_number=i,
                                      upgrade_lower_score=upgrade_score[num])
        return True, '等级删除成功'
# 优化 批量的方法
            sql_number = 'update team_level  SET level_number = CASE level_id '
            sql_score = ' upgrade_lower_score = CASE level_id '
            for i in range(level_number, level_count + level_number):
                num = i - level_number
                sql_number += 'WHEN "{0}" THEN {1} \n'.format(level_info[num].get('level_id'), i)
                sql_score += 'WHEN "{0}" THEN {1} \n'.format(level_info[num].get('level_id'), upgrade_score[num])
            sql_number += ' END,'
            sql_score += ' END'
            sql = sql_number + sql_score
            sql += ' WHERE level_id in  ? '
            level_model.update_sql(sql, level_ids)

你可能感兴趣的:(python)