| 
					
				 | 
			
			
				@@ -288,6 +288,23 @@ class Mvp: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             (%s, %s, %s, 1, 'binren', now()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ''' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sql_23 = ''' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        DELETE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        FROM 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            mvp_crowd_info_module 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        WHERE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            crowd_info_id NOT IN ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                SELECT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    GROUP_CONCAT(id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                FROM 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    mvp_crowd_info 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                WHERE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    city_name = '上海市' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                AND age_area = '85后' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                AND STATUS = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ''' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         数据debug SQL 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         1: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -343,8 +360,6 @@ class Mvp: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.module_scores = ExcelUtil(file_name='set-behavior-tag.xlsx', sheet_name='算法关系表').init_module_info() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # self.scores_tag = ExcelUtil(file_name='行为与模块分值汇总.xlsx', sheet_name='行为').init_scores() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # 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): 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -477,6 +492,9 @@ class Mvp: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     result = self.city_age_crowd(city, age, crowd) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     self.insert_score_to_db(result) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         print('{}数据更新完成...'.format(time.time())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        insert_data = self.shanghai_85_module_score_insert() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.insert_score_to_db(insert_data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        print('上海市-85后模块分值模拟数据入库成功...') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.update_gender_rate() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.update_icon() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -558,7 +576,7 @@ class Mvp: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if len(module_insert_data) > 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 table_name = self.get_table_name('模块分数') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if table_name is not None and table_name not in self.insert_table: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    self.linshi_db.truncate(table_name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    self.linshi_db.delete(self.sql_23) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 self.linshi_db.add_some(module_insert_sql, module_insert_data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 self.insert_table.append(table_name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 print('模块分数更新完成...') 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -576,10 +594,10 @@ class Mvp: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if len(insert_data) > 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         table_name = self.get_table_name(key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if table_name and table_name not in self.insert_table: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            # if table_name == 'mvp_crowd_info_behavior': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            #     self.linshi_db.delete(self.sql_18) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            # else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            self.linshi_db.truncate(table_name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if table_name == 'mvp_crowd_info_behavior': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                self.linshi_db.delete(self.sql_18) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                self.linshi_db.truncate(table_name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         self.linshi_db.add_some(insert_sql, insert_data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         self.insert_table.append(table_name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 else: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -658,47 +676,15 @@ class Mvp: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 module_name = key 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 score = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 for value in values: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    behavioral_name = value[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    # behavioral_name = value[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     weight = float(value[2]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     # standard_score = [x[4] for x in scores if x[2] == behavioral_name] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     standard_score = float(value[1]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if standard_score is not None: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         score += standard_score * weight 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 result.append(['上海市', '85后', crowd, module_name, score]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return {'score': result, 'data': self.module_scores} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def tag_module_score_insert(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            标签模块分数写入数据库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        :return: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ids = self.query_data() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        insert_data = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        insert_data_1 = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for tag, module in zip(self.scores_tag, self.score_module): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            city = tag[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            age = tag[1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            crowd = tag[2] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            tag_name = tag[3] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            tag_score = tag[4] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            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 == city_1 and self.age_dict[age] == age_1 and crowd == crowd_1: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    insert_data.append([id_1, tag_name, tag_score]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if city_2 == city_1 and self.age_dict[age_2] == age_1 and crowd_2 == crowd_1: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    insert_data_1.append([id_1, module_name_2, module_score_2]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        self.shangju_db.add_some(self.sql_12, insert_data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        self.shangju_db.add_some(self.sql_13, insert_data_1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # return result 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return {'behavior_score': [], 'module_score': result} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def init_age(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         """ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -757,22 +743,26 @@ class Mvp: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for key in self.tag_data.keys(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             values = self.tag_data[key] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             result_sub = {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            # 标签 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for key_tag_name in values.keys(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                questions = values[key_tag_name] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                elements = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                for value in questions: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    question = value[0].split('-')[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    option = value[0].split('-')[1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    corr = value[1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    fz, fm = self.molecular_value(question, option, city, age, people_uuids) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if fm == 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        c = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        c = fz / fm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    elements.append([question, option, corr, fz, fm, c]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                result_sub[key_tag_name] = elements 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            result[key] = self.indicator_calculation_d_e(result_sub) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if key == '用户画像-行为兴趣' and city == '上海市' and age == '85后': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                print('用户画像-行为兴趣,上海市,85后无需计算。') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                pass 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                # 标签 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for key_tag_name in values.keys(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    questions = values[key_tag_name] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    elements = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for value in questions: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        question = value[0].split('-')[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        option = value[0].split('-')[1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        corr = value[1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        fz, fm = self.molecular_value(question, option, city, age, people_uuids) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if fm == 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            c = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            c = fz / fm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        elements.append([question, option, corr, fz, fm, c]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    result_sub[key_tag_name] = elements 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                result[key] = self.indicator_calculation_d_e(result_sub) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return result 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def molecular_value(self, queston, option, city, age, people_uuids): 
			 |