1.优化sql查询,仅查询使用

2.优化括号显示问题
3.优化区服的对应中文映射
This commit is contained in:
李伟 2022-06-01 15:59:03 +08:00
parent ad7e4674ed
commit 75615f8bfc
2 changed files with 29 additions and 4 deletions

View File

@ -37,9 +37,13 @@ async def query_sql(
) -> schemas.Msg: ) -> schemas.Msg:
"""原 sql 查询 """ """原 sql 查询 """
sql = data_in.sql sql = data_in.sql
sql = sql.replace('$game', game) sql1=sql.lower()
data = await ckdb.execute(sql) if 'insert' not in sql1 and 'update' not in sql1 and 'delete' not in sql1 and 'select' in sql1:
return schemas.Msg(code=0, msg='ok', data=data) 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") @router.post("/sql_export")
@ -237,6 +241,19 @@ async def event_model(
q['date_range'] = date_range #把要查询的时间加入q字典中 q['date_range'] = date_range #把要查询的时间加入q字典中
df = await ckdb.query_dataframe(sql) #以sql语句查出数据df是二维列表 df = await ckdb.query_dataframe(sql) #以sql语句查出数据df是二维列表
df.fillna(0, inplace=True)#以0填补空数据 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: if df.shape[0] == 0:
df = pd.DataFrame({'date': date_range, 'values': 0 * len(date_range)}) 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']== '城市': if str(group) == '0' and analysis.event_view['groupBy'][0]['columnDesc']== '城市':
q['groups'].append('未知城市') q['groups'].append('未知城市')
else: 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 = [] concat_data = []
for i in set(date_range) - set(df_group['date']): for i in set(date_range) - set(df_group['date']):
if len(groupby) > 1: if len(groupby) > 1:

View File

@ -26,5 +26,10 @@ class CRUDSelectMap(CRUDBase):
res = await self.find_one(db, where, {'_id': 0}) res = await self.find_one(db, where, {'_id': 0})
return res 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') select_map = CRUDSelectMap('select_map')