Browse Source

mvp: 自己数据写入mysql的程序

Signed-off-by: binren <zhangbr@elab-plus.com>
binren 5 years ago
parent
commit
d455f7a49a
1 changed files with 105 additions and 1 deletions
  1. 105 1
      mvp.py

+ 105 - 1
mvp.py

@@ -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'))