diff --git a/v2/sketch.py b/v2/sketch.py index 090a23f..e0f40ab 100644 --- a/v2/sketch.py +++ b/v2/sketch.py @@ -1,5 +1,6 @@ import copy - +import pandas as pd +from settings import settings from .valid_data import * @@ -9,6 +10,7 @@ class Sketch: self.struct_cache = struct_cache self.__type_dict = dict() self.__struct_dict = dict() + self.init_tb_struct() @property def type_dict(self): @@ -30,20 +32,30 @@ class Sketch: if self.struct_cache: self.struct_cache.update(db, tb, data) + def init_tb_struct_cache(self, db, tb): + sql = f"select name,type from system.columns where database='{db}' and table='{tb}'" + + data, columns = self.db_client.execute(sql, with_column_types=True, columnar=True) + res = {k: v for k, v in zip(data[0], data[1])} + self.__struct_dict[f'{db}_{tb}'] = res + self.up_tb_struct(db, tb, res) + return res + + def init_tb_struct(self): + self.init_tb_struct_cache(settings.GAME, 'event') + self.init_tb_struct_cache(settings.GAME, 'user') + def get_tb_struct_cache(self, db, tb): """ - 查一条记录 取字段 和类型 + 取字段 和类型 :param db: :param tb: :return: """ if self.__struct_dict.get(f'{db}_{tb}'): return self.__struct_dict.get(f'{db}_{tb}') - sql = f'select * from {db}.{tb} limit 1' - _, columns = self.db_client.execute(sql, with_column_types=True) - res = {item[0]: item[1] for item in columns} - self.__struct_dict[f'{db}_{tb}'] = res - self.up_tb_struct(db, tb, res) + + res = self.init_tb_struct_cache(db, tb) return res def update_user_view(self, db, tb):