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