From 75615f8bfc28adb3d4ede8ba228c84423709fab5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E4=BC=9F?= <250213850@qq.com> Date: Wed, 1 Jun 2022 15:59:03 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BC=98=E5=8C=96sql=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=EF=BC=8C=E4=BB=85=E6=9F=A5=E8=AF=A2=E4=BD=BF=E7=94=A8=202.?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=8B=AC=E5=8F=B7=E6=98=BE=E7=A4=BA=E9=97=AE?= =?UTF-8?q?=E9=A2=98=203.=E4=BC=98=E5=8C=96=E5=8C=BA=E6=9C=8D=E7=9A=84?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E4=B8=AD=E6=96=87=E6=98=A0=E5=B0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/api_v1/endpoints/query.py | 28 ++++++++++++++++++++++++---- crud/select_map.py | 5 +++++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/api/api_v1/endpoints/query.py b/api/api_v1/endpoints/query.py index ea434a6..b7133c3 100644 --- a/api/api_v1/endpoints/query.py +++ b/api/api_v1/endpoints/query.py @@ -37,9 +37,13 @@ async def query_sql( ) -> schemas.Msg: """原 sql 查询 """ sql = data_in.sql - sql = sql.replace('$game', game) - data = await ckdb.execute(sql) - return schemas.Msg(code=0, msg='ok', data=data) + sql1=sql.lower() + if 'insert' not in sql1 and 'update' not in sql1 and 'delete' not in sql1 and 'select' in sql1: + sql = sql.replace('$game', game) + data = await ckdb.execute(sql) + return schemas.Msg(code=0, msg='ok', data=data) + else: + return schemas.Msg(code=0, msg='ok', data='当前只支持SQL查询语句!') @router.post("/sql_export") @@ -237,6 +241,19 @@ async def event_model( q['date_range'] = date_range #把要查询的时间加入q字典中 df = await ckdb.query_dataframe(sql) #以sql语句查出数据,df是二维列表 df.fillna(0, inplace=True)#以0填补空数据 + #映射对应中文返回给前端展示 + for i in groupby: + if i == 'svrindex': + if game == 'mfmh5': + game = 'mzmfmh5' + chinese={} + resp = await crud.select_map.get_one(db, game,i) + for ii in resp: + chinese[ii['id']]=ii['title'] + for k,v in chinese.items(): + #开始映射 + df.loc[df[i] == k, i] = v + #获取第一矩阵的长度 if df.shape[0] == 0: df = pd.DataFrame({'date': date_range, 'values': 0 * len(date_range)}) @@ -311,7 +328,10 @@ async def event_model( if str(group) == '0' and analysis.event_view['groupBy'][0]['columnDesc']== '城市': q['groups'].append('未知城市') else: - q['groups'].append(str(group)) + if 'str' in str(type(group)): + q['groups'].append(str(group)) + else: + q['groups'].append(str(list(group))) concat_data = [] for i in set(date_range) - set(df_group['date']): if len(groupby) > 1: diff --git a/crud/select_map.py b/crud/select_map.py index 58e27da..9594a61 100644 --- a/crud/select_map.py +++ b/crud/select_map.py @@ -26,5 +26,10 @@ class CRUDSelectMap(CRUDBase): res = await self.find_one(db, where, {'_id': 0}) return res + async def get_one(self, db: AsyncIOMotorDatabase, game: str, screen: str): + where = {'game': game, 'attr_name': screen} + res = await self.find_one(db, where, {'_id': 0}) + return res.get('map_') + select_map = CRUDSelectMap('select_map')