|  | @@ -58,8 +58,18 @@ class Mvp:
 | 
	
		
			
				|  |  |          '1818': 'F',
 | 
	
		
			
				|  |  |          '1819': 'G'
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    base_insert_sql = 'insert into {}(crowd_info_id, {}, standard_value, status) values(%s, %s, %s, ' \
 | 
	
		
			
				|  |  | -                      '1) '
 | 
	
		
			
				|  |  | +    base_insert_sql = '''
 | 
	
		
			
				|  |  | +        INSERT INTO {} (
 | 
	
		
			
				|  |  | +            crowd_info_id,
 | 
	
		
			
				|  |  | +            {},
 | 
	
		
			
				|  |  | +            standard_value,
 | 
	
		
			
				|  |  | +            STATUS,
 | 
	
		
			
				|  |  | +            creator,
 | 
	
		
			
				|  |  | +            created
 | 
	
		
			
				|  |  | +        )
 | 
	
		
			
				|  |  | +        VALUES
 | 
	
		
			
				|  |  | +            (%s, %s, %s, 1, 'binren', now())
 | 
	
		
			
				|  |  | +    '''
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def get_table_name(self, name):
 | 
	
		
			
				|  |  |          """
 | 
	
	
		
			
				|  | @@ -126,7 +136,7 @@ class Mvp:
 | 
	
		
			
				|  |  |      # 根据子选项id统计答题数
 | 
	
		
			
				|  |  |      sql_8 = '''
 | 
	
		
			
				|  |  |          SELECT
 | 
	
		
			
				|  |  | -            count(1)
 | 
	
		
			
				|  |  | +            count(DISTINCT a.uuid)
 | 
	
		
			
				|  |  |          FROM
 | 
	
		
			
				|  |  |              f_t_daren_score_2 a
 | 
	
		
			
				|  |  |          LEFT JOIN d_shangju_tiku_02 b ON a.sub_question_id = b.sub_question_id
 | 
	
	
		
			
				|  | @@ -260,6 +270,20 @@ class Mvp:
 | 
	
		
			
				|  |  |      sql_21 = '''
 | 
	
		
			
				|  |  |      '''
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    # 更新性别占比数据
 | 
	
		
			
				|  |  | +    sql_22 = '''
 | 
	
		
			
				|  |  | +            INSERT INTO mvp_crowd_info_gender_rate (
 | 
	
		
			
				|  |  | +            crowd_info_id,
 | 
	
		
			
				|  |  | +            gender,
 | 
	
		
			
				|  |  | +            standard_value,
 | 
	
		
			
				|  |  | +            STATUS,
 | 
	
		
			
				|  |  | +            creator,
 | 
	
		
			
				|  |  | +            created
 | 
	
		
			
				|  |  | +        )
 | 
	
		
			
				|  |  | +        VALUES
 | 
	
		
			
				|  |  | +            (%s, %s, %s, 1, 'binren', now())
 | 
	
		
			
				|  |  | +    '''
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      """
 | 
	
		
			
				|  |  |          数据debug SQL
 | 
	
		
			
				|  |  |          1:
 | 
	
	
		
			
				|  | @@ -315,6 +339,7 @@ class Mvp:
 | 
	
		
			
				|  |  |          # self.score_module = ExcelUtil(file_name='行为与模块分值汇总.xlsx', sheet_name='模块').init_scores()
 | 
	
		
			
				|  |  |          self.scores_tag = None
 | 
	
		
			
				|  |  |          self.score_module = None
 | 
	
		
			
				|  |  | +        self.people_info_1 = self.people_info()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def close(self):
 | 
	
		
			
				|  |  |          self.shangju_db.close()
 | 
	
	
		
			
				|  | @@ -366,10 +391,11 @@ class Mvp:
 | 
	
		
			
				|  |  |              city = people[1]
 | 
	
		
			
				|  |  |              nld = people[2]
 | 
	
		
			
				|  |  |              sex = people[3]
 | 
	
		
			
				|  |  | +            if sex:
 | 
	
		
			
				|  |  | +                sex = str(sex).split(',')[0]
 | 
	
		
			
				|  |  |              sub_option_ids_1 = people[4]
 | 
	
		
			
				|  |  |              testcaseid = people[5]
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |              if str(city).find('市') != -1:
 | 
	
		
			
				|  |  |                  city = str(city).split('市')[0] + '市'
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -434,16 +460,54 @@ class Mvp:
 | 
	
		
			
				|  |  |          """
 | 
	
		
			
				|  |  |          self.insert_table = []
 | 
	
		
			
				|  |  |          self.linshi_db = MysqlDB('linshi', db_type=1)
 | 
	
		
			
				|  |  | +        self.ids = self.query_data()
 | 
	
		
			
				|  |  |          for city in self.city_list:
 | 
	
		
			
				|  |  |              for age in self.age_list:
 | 
	
		
			
				|  |  |                  for crowd in self.crowd:
 | 
	
		
			
				|  |  |                      result = self.city_age_crowd(city, age, crowd)
 | 
	
		
			
				|  |  |                      self.insert_score_to_db(result)
 | 
	
		
			
				|  |  | -        print('{}数据关系完成...'.format(time.time()))
 | 
	
		
			
				|  |  | +        print('{}数据更新完成...'.format(time.time()))
 | 
	
		
			
				|  |  | +        self.update_gender_rate()
 | 
	
		
			
				|  |  | +        self.update_icon()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def update_gender_rate(self):
 | 
	
		
			
				|  |  | +        """
 | 
	
		
			
				|  |  | +            更新性别占比
 | 
	
		
			
				|  |  | +        :return:
 | 
	
		
			
				|  |  | +        """
 | 
	
		
			
				|  |  | +        insert_data = []
 | 
	
		
			
				|  |  | +        for city in self.city_list:
 | 
	
		
			
				|  |  | +            for age in self.age_list:
 | 
	
		
			
				|  |  | +                for crowd in self.crowd:
 | 
	
		
			
				|  |  | +                    boy = 0
 | 
	
		
			
				|  |  | +                    girl = 0
 | 
	
		
			
				|  |  | +                    for people in self.people_info_1:
 | 
	
		
			
				|  |  | +                        if people.sex is not None and city == people.city and crowd == people.crowd and age == people.age:
 | 
	
		
			
				|  |  | +                            if people.sex == 1:
 | 
	
		
			
				|  |  | +                                boy += 1
 | 
	
		
			
				|  |  | +                            if people.sex == 2:
 | 
	
		
			
				|  |  | +                                girl += 1
 | 
	
		
			
				|  |  | +                    crowd_info_id = self.get_crowd_info_id([city, age, crowd])
 | 
	
		
			
				|  |  | +                    if crowd_info_id:
 | 
	
		
			
				|  |  | +                        boy_rate = boy / (boy + girl)
 | 
	
		
			
				|  |  | +                        insert_data.append([crowd_info_id, 1, boy_rate])
 | 
	
		
			
				|  |  | +                        girl_rate = girl / (boy + girl)
 | 
	
		
			
				|  |  | +                        insert_data.append([crowd_info_id, 0, girl_rate])
 | 
	
		
			
				|  |  | +        self.linshi_db.add_some(self.sql_22, insert_data)
 | 
	
		
			
				|  |  | +        print('性别占比更新完成...')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def get_crowd_info_id(self, people_info):
 | 
	
		
			
				|  |  | +        for id_data in self.ids:
 | 
	
		
			
				|  |  | +            city_1 = id_data[2]
 | 
	
		
			
				|  |  | +            age_1 = id_data[1]
 | 
	
		
			
				|  |  | +            crowd_1 = id_data[3]
 | 
	
		
			
				|  |  | +            id_1 = id_data[0]
 | 
	
		
			
				|  |  | +            if people_info[0] == city_1 and people_info[1] == age_1 and people_info[2] == crowd_1:
 | 
	
		
			
				|  |  | +                return id_1
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def update_icon(self):
 | 
	
		
			
				|  |  |          """
 | 
	
		
			
				|  |  | -            更新行为对应图标
 | 
	
		
			
				|  |  | +            标签关联图标
 | 
	
		
			
				|  |  |          :return:
 | 
	
		
			
				|  |  |          """
 | 
	
		
			
				|  |  |          icons = self.linshi_db.select(self.sql_19)
 | 
	
	
		
			
				|  | @@ -451,32 +515,22 @@ class Mvp:
 | 
	
		
			
				|  |  |              id = ic[0]
 | 
	
		
			
				|  |  |              name = ic[1]
 | 
	
		
			
				|  |  |              self.linshi_db.update(self.sql_20, [id, name])
 | 
	
		
			
				|  |  | -        pass
 | 
	
		
			
				|  |  | +        print('行为标签关联图标完成...')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      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 age_2 == age_1 and crowd_2 == crowd_1:
 | 
	
		
			
				|  |  | -                        module_insert_data.append([id_1, module_name_2, module_score_2])
 | 
	
		
			
				|  |  | +                data = self.need_inert(module)
 | 
	
		
			
				|  |  | +                if data:
 | 
	
		
			
				|  |  | +                    module_insert_data.append(data)
 | 
	
		
			
				|  |  |              # 先清空之前的数据
 | 
	
		
			
				|  |  |              if len(module_insert_data) > 0:
 | 
	
		
			
				|  |  |                  table_name = self.get_table_name('模块分数')
 | 
	
	
		
			
				|  | @@ -493,21 +547,9 @@ class Mvp:
 | 
	
		
			
				|  |  |                      insert_data = []
 | 
	
		
			
				|  |  |                      score = b_score[key]
 | 
	
		
			
				|  |  |                      for data in score:
 | 
	
		
			
				|  |  | -                        city = data[0]
 | 
	
		
			
				|  |  | -                        age = data[1]
 | 
	
		
			
				|  |  | -                        tag_name = data[2]
 | 
	
		
			
				|  |  | -                        crowd = data[3]
 | 
	
		
			
				|  |  | -                        tag_score = data[4]
 | 
	
		
			
				|  |  | -                        # if key == '用户画像-行为兴趣' and city == '上海市' and age == '85后':
 | 
	
		
			
				|  |  | -                        #     pass
 | 
	
		
			
				|  |  | -                        # else:
 | 
	
		
			
				|  |  | -                        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 age == age_1 and crowd == crowd_1:
 | 
	
		
			
				|  |  | -                                insert_data.append([id_1, tag_name, tag_score])
 | 
	
		
			
				|  |  | +                        insert_data_element = self.need_inert(data)
 | 
	
		
			
				|  |  | +                        if insert_data_element:
 | 
	
		
			
				|  |  | +                            insert_data.append(insert_data_element)
 | 
	
		
			
				|  |  |                      if len(insert_data) > 0:
 | 
	
		
			
				|  |  |                          table_name = self.get_table_name(key)
 | 
	
		
			
				|  |  |                          if table_name and table_name not in self.insert_table:
 | 
	
	
		
			
				|  | @@ -521,6 +563,23 @@ class Mvp:
 | 
	
		
			
				|  |  |                      print('未找到对应的表,数据无法插入...')
 | 
	
		
			
				|  |  |              print('行为分数更新完成...')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    def need_inert(self, data):
 | 
	
		
			
				|  |  | +        city = data[0]
 | 
	
		
			
				|  |  | +        age = data[1]
 | 
	
		
			
				|  |  | +        crowd = data[2]
 | 
	
		
			
				|  |  | +        tag_name = data[3]
 | 
	
		
			
				|  |  | +        tag_score = data[4]
 | 
	
		
			
				|  |  | +        # if key == '用户画像-行为兴趣' and city == '上海市' and age == '85后':
 | 
	
		
			
				|  |  | +        #     pass
 | 
	
		
			
				|  |  | +        # else:
 | 
	
		
			
				|  |  | +        for id_data in self.ids:
 | 
	
		
			
				|  |  | +            city_1 = id_data[2]
 | 
	
		
			
				|  |  | +            age_1 = id_data[1]
 | 
	
		
			
				|  |  | +            crowd_1 = id_data[3]
 | 
	
		
			
				|  |  | +            id_1 = id_data[0]
 | 
	
		
			
				|  |  | +            if city == city_1 and age == age_1 and crowd == crowd_1:
 | 
	
		
			
				|  |  | +                return [id_1, tag_name, tag_score]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      def module_score(self, crowd, city, age, scores):
 | 
	
		
			
				|  |  |          """
 | 
	
		
			
				|  |  |              模块分数计算
 | 
	
	
		
			
				|  | @@ -631,7 +690,6 @@ class Mvp:
 | 
	
		
			
				|  |  |          data_start = []
 | 
	
		
			
				|  |  |          result = []
 | 
	
		
			
				|  |  |          module_scores = []
 | 
	
		
			
				|  |  | -        self.people_info_1 = self.people_info()
 | 
	
		
			
				|  |  |          if city is not None and age is not None and crowd is not None:
 | 
	
		
			
				|  |  |              print('获取指定城市,年龄段,人群类型的数据...')
 | 
	
		
			
				|  |  |              # people_uuids = self.get_people_uuid_by_type(crowd)
 | 
	
	
		
			
				|  | @@ -767,7 +825,7 @@ class Mvp:
 | 
	
		
			
				|  |  |                      if value[2] is not None and value[7] is not None:
 | 
	
		
			
				|  |  |                          f += float(value[2] * value[7])
 | 
	
		
			
				|  |  |                  print('     标准分:{}'.format(f))
 | 
	
		
			
				|  |  | -                scores_sub.append([city, age, key_tag, crowd_type, f])
 | 
	
		
			
				|  |  | +                scores_sub.append([city, age, crowd_type, key_tag, f])
 | 
	
		
			
				|  |  |              scores[key_tag_type] = scores_sub
 | 
	
		
			
				|  |  |              # self.shangju_db.add_some(self.sql_9, scores)
 | 
	
		
			
				|  |  |          return scores, scores['用户画像-行为兴趣']
 | 
	
	
		
			
				|  | @@ -851,7 +909,7 @@ class Mvp:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  if __name__ == '__main__':
 | 
	
		
			
				|  |  | -    # mvp = Mvp()
 | 
	
		
			
				|  |  | -    # mvp.linshi_db = MysqlDB('linshi', db_type=1)
 | 
	
		
			
				|  |  | -    # mvp.update_icon()
 | 
	
		
			
				|  |  | +    mvp = Mvp()
 | 
	
		
			
				|  |  | +    mvp.linshi_db = MysqlDB('linshi', db_type=1)
 | 
	
		
			
				|  |  | +    mvp.update_icon()
 | 
	
		
			
				|  |  |      pass
 |