|  | @@ -1,5 +1,6 @@
 | 
	
		
			
				|  |  |  from mysql_db import MysqlDB
 | 
	
		
			
				|  |  |  from excel_util import ExcelUtil
 | 
	
		
			
				|  |  | +import time
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  class Mvp:
 | 
	
	
		
			
				|  | @@ -20,6 +21,40 @@ class Mvp:
 | 
	
		
			
				|  |  |          '90-94年生': '90后',
 | 
	
		
			
				|  |  |          '95-99年生': '95后'
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +    tag_table = {
 | 
	
		
			
				|  |  | +        '用户画像-审美偏好': ['mvp_crowd_info_aesthetic_preference', 'aesthetic_preference'],
 | 
	
		
			
				|  |  | +        '用户画像-行为兴趣': ['mvp_crowd_info_behavior', 'behavioral_interest'],
 | 
	
		
			
				|  |  | +        '用户画像-观念': ['mvp_crowd_info_consumer_concept', ''],
 | 
	
		
			
				|  |  | +        '用户画像-消费特征': ['mvp_crowd_info_consumer_structure', ''],
 | 
	
		
			
				|  |  | +        '空间需求图谱-功能关联': ['mvp_crowd_info_functional_module', ''],
 | 
	
		
			
				|  |  | +        '性别比例': ['mvp_crowd_info_gender_rate', ''],
 | 
	
		
			
				|  |  | +        '用户画像-生活方式': ['mvp_crowd_info_life_style', ''],
 | 
	
		
			
				|  |  | +        '人群占比': ['mvp_crowd_info_rate', ''],
 | 
	
		
			
				|  |  | +        '用户画像-社交模式': ['mvp_crowd_info_social_mode', ''],
 | 
	
		
			
				|  |  | +        '用户画像-行业': ['mvp_crowd_info_trade', ''],
 | 
	
		
			
				|  |  | +        '用户画像-出行方式': ['mvp_crowd_info_trip_mode', ''],
 | 
	
		
			
				|  |  | +        '空间需求图谱-基础模块分值': ['mvp_innovate_space_base_module', ''],
 | 
	
		
			
				|  |  | +        '空间需求图谱-色相': ['mvp_innovate_space_color_prefer', 'color'],
 | 
	
		
			
				|  |  | +        '空间需求图谱-精装关注点': ['mvp_innovate_space_hardcover_focus', 'hardcover_focus'],
 | 
	
		
			
				|  |  | +        '空间需求图谱-色调': ['mvp_innovate_space_hue_prefer', 'hue'],
 | 
	
		
			
				|  |  | +        '空间需求图谱-单品偏好': ['mvp_innovate_space_item_preference', 'item_preference'],
 | 
	
		
			
				|  |  | +        '空间需求图谱-材质': ['mvp_innovate_space_material_prefer', 'material'],
 | 
	
		
			
				|  |  | +        '空间需求图谱-空间特性偏好': ['mvp_innovate_space_space_prefer', 'space_preference'],
 | 
	
		
			
				|  |  | +        '空间需求图谱-空间拓普图': ['mvp_innovate_space_space_top', ''],
 | 
	
		
			
				|  |  | +        '模块分数': ['mvp_crowd_info_module', 'module_name']
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    base_insert_sql = 'insert into {}(crowd_info_id, {}, standard_value, status) values(%s, %s, %s, '\
 | 
	
		
			
				|  |  | +                      '1) '
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def get_insert_sql(self, tag_type_name):
 | 
	
		
			
				|  |  | +        """
 | 
	
		
			
				|  |  | +            根据标签分类名称获取相应表的插入sql
 | 
	
		
			
				|  |  | +        :param tag_type_name:
 | 
	
		
			
				|  |  | +        :return:
 | 
	
		
			
				|  |  | +        """
 | 
	
		
			
				|  |  | +        params = self.tag_table.get(tag_type_name)
 | 
	
		
			
				|  |  | +        if params:
 | 
	
		
			
				|  |  | +            return self.base_insert_sql.format(params[0], [1])
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      crowd = ['A', 'B', 'C', 'D', 'E', 'F']
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -126,6 +161,71 @@ class Mvp:
 | 
	
		
			
				|  |  |          print('update finished!!!')
 | 
	
		
			
				|  |  |          return scores_behavioral
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    def update_data(self):
 | 
	
		
			
				|  |  | +        """
 | 
	
		
			
				|  |  | +            定时更新分值
 | 
	
		
			
				|  |  | +        :return:
 | 
	
		
			
				|  |  | +        """
 | 
	
		
			
				|  |  | +        citys = ['上海市', '杭州市', '苏州市', '无锡市', '宁波市']
 | 
	
		
			
				|  |  | +        for city in citys:
 | 
	
		
			
				|  |  | +            result = self.city_age_crowd(city)
 | 
	
		
			
				|  |  | +            self.insert_score_to_db(result)
 | 
	
		
			
				|  |  | +            print('{}数据更新完成...'.format(citys))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        print('{}数据关系完成...'.format(time.time()))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def insert_score_to_db(self, scores):
 | 
	
		
			
				|  |  | +        """
 | 
	
		
			
				|  |  | +            行为、模块分数写入数据库
 | 
	
		
			
				|  |  | +        :return:
 | 
	
		
			
				|  |  | +        """
 | 
	
		
			
				|  |  | +        ids = self.query_data()
 | 
	
		
			
				|  |  | +        behavior_score = scores['behavior_score']
 | 
	
		
			
				|  |  | +        module_score = scores['module_score']
 | 
	
		
			
				|  |  | +        module_insert_sql = self.get_insert_sql('模块分数')
 | 
	
		
			
				|  |  | +        if module_insert_sql:
 | 
	
		
			
				|  |  | +            module_insert_data = []
 | 
	
		
			
				|  |  | +            for module in module_score:
 | 
	
		
			
				|  |  | +                city_2 = module[0]
 | 
	
		
			
				|  |  | +                age_2 = module[1]
 | 
	
		
			
				|  |  | +                crowd_2 = module[2]
 | 
	
		
			
				|  |  | +                module_name_2 = module[3]
 | 
	
		
			
				|  |  | +                module_score_2 = module[4]
 | 
	
		
			
				|  |  | +                for id in ids:
 | 
	
		
			
				|  |  | +                    city_1 = id[2]
 | 
	
		
			
				|  |  | +                    age_1 = id[1]
 | 
	
		
			
				|  |  | +                    crowd_1 = id[3]
 | 
	
		
			
				|  |  | +                    id_1 = id[0]
 | 
	
		
			
				|  |  | +                    if city_2 == city_1 and self.age_dict[age_2] == age_1 and crowd_2 == crowd_1:
 | 
	
		
			
				|  |  | +                        module_insert_data.append([id_1, module_name_2, module_score_2])
 | 
	
		
			
				|  |  | +            self.shangju_db.add_some(module_insert_sql, module_insert_data)
 | 
	
		
			
				|  |  | +            print('模块分数更新完成...')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        for key in behavior_score.keys():
 | 
	
		
			
				|  |  | +            insert_sql = self.get_insert_sql(key)
 | 
	
		
			
				|  |  | +            if insert_sql:
 | 
	
		
			
				|  |  | +                insert_data = []
 | 
	
		
			
				|  |  | +                score = behavior_score[key]
 | 
	
		
			
				|  |  | +                for data in score:
 | 
	
		
			
				|  |  | +                    city = data[0]
 | 
	
		
			
				|  |  | +                    age = data[1]
 | 
	
		
			
				|  |  | +                    tag_name = data[2]
 | 
	
		
			
				|  |  | +                    crowd = data[3]
 | 
	
		
			
				|  |  | +                    tag_score = data[4]
 | 
	
		
			
				|  |  | +                    for id in ids:
 | 
	
		
			
				|  |  | +                        city_1 = id[2]
 | 
	
		
			
				|  |  | +                        age_1 = id[1]
 | 
	
		
			
				|  |  | +                        crowd_1 = id[3]
 | 
	
		
			
				|  |  | +                        id_1 = id[0]
 | 
	
		
			
				|  |  | +                        if city == city_1 and self.age_dict[age] == age_1 and crowd == crowd_1:
 | 
	
		
			
				|  |  | +                            insert_data.append([id_1, tag_name, tag_score])
 | 
	
		
			
				|  |  | +                if len(insert_data) > 0:
 | 
	
		
			
				|  |  | +                    self.shangju_db.truncate(key)
 | 
	
		
			
				|  |  | +                    self.shangju_db.add_some(insert_sql, insert_data)
 | 
	
		
			
				|  |  | +            else:
 | 
	
		
			
				|  |  | +                print('未找到对应的表,数据无法插入...')
 | 
	
		
			
				|  |  | +        print('行为分数更新完成...')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      def module_score(self, crowd, city, age, scores):
 | 
	
		
			
				|  |  |          """
 | 
	
		
			
				|  |  |              模块分数计算
 | 
	
	
		
			
				|  | @@ -282,7 +382,7 @@ class Mvp:
 | 
	
		
			
				|  |  |          #             ele.extend(sub_e)
 | 
	
		
			
				|  |  |          #             data_list.append(ele)
 | 
	
		
			
				|  |  |          #     pass
 | 
	
		
			
				|  |  | -        return {'tag_score': result, 'module_score': module_scores}
 | 
	
		
			
				|  |  | +        return {'behavior_score': result, 'module_score': module_scores}
 | 
	
		
			
				|  |  |          # return {'score': result, 'data': data_list}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def behavior_tag_init(self, city, age, people_uuids):
 | 
	
	
		
			
				|  | @@ -426,3 +526,7 @@ class Mvp:
 | 
	
		
			
				|  |  |              infos[key] = sub_option_ids
 | 
	
		
			
				|  |  |          print(infos)
 | 
	
		
			
				|  |  |          return infos
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if __name__ == '__main__':
 | 
	
		
			
				|  |  | +    print('{}哈{}ha%s'.format('1', '2'))
 |