mirror of
https://github.com/rnvm9wjdtj-bot/myaps_api.git
synced 2026-06-02 05:54:40 +00:00
fix(monitor): 修复SQLite数据库查询适配问题
1. 替换占位符从$1风格为SQLite兼容的?格式 2. 使用动态生成的占位符数量适配模块筛选条件 3. 增加对SQLite查询结果格式的兼容处理 4. 新增SQLITE_FILE配置项用于获取数据库连接
This commit is contained in:
@@ -16,7 +16,7 @@ from .service import monitor_service
|
||||
from .log_stream_service import log_stream_service
|
||||
from .storage import request_storage, outbound_request_storage, system_log_storage
|
||||
from .models import APIRequest, OutboundAPIRequest, SystemLog
|
||||
from core.settings import TIMEZONE
|
||||
from core.settings import TIMEZONE, SQLITE_FILE
|
||||
from globalobjects import logger as log_config
|
||||
import time
|
||||
import json
|
||||
@@ -1137,25 +1137,35 @@ async def get_history_by_time_range(
|
||||
from .models import SystemLog
|
||||
from tortoise import connections
|
||||
|
||||
conn = connections.get("default")
|
||||
conn = connections.get(SQLITE_FILE)
|
||||
|
||||
# 构建SQL查询
|
||||
sql = "SELECT level, COUNT(*) as count FROM system_logs WHERE 1=1"
|
||||
params = []
|
||||
|
||||
if utc_start and utc_end:
|
||||
sql += " AND timestamp >= $1 AND timestamp <= $2"
|
||||
sql += " AND timestamp >= ? AND timestamp <= ?"
|
||||
params.extend([utc_start, utc_end])
|
||||
|
||||
if filter_params and filter_params.get('module'):
|
||||
sql += f" AND module IN ({','.join(['$'+str(i+3) for i in range(len(filter_params['module']))])})"
|
||||
sql += f" AND module IN ({','.join(['?' for _ in filter_params['module']])})"
|
||||
params.extend(filter_params['module'])
|
||||
|
||||
sql += " GROUP BY level"
|
||||
|
||||
# 执行查询
|
||||
rows = await conn.execute_query(sql, params)
|
||||
level_stats = {row['level']: row['count'] for row in rows[1] if row.get('level')}
|
||||
level_stats = {}
|
||||
if rows and len(rows) > 1 and rows[1]:
|
||||
for row in rows[1]:
|
||||
# SQLite返回sqlite3.Row对象,支持索引访问
|
||||
if isinstance(row, (tuple, list)) and len(row) >= 2:
|
||||
level_stats[row[0]] = row[1]
|
||||
elif hasattr(row, '__getitem__'):
|
||||
try:
|
||||
level_stats[row['level']] = row['count']
|
||||
except (KeyError, TypeError):
|
||||
pass
|
||||
result["stats"]["level_distribution"] = level_stats
|
||||
except Exception as e:
|
||||
print(f"统计级别分布失败: {e}")
|
||||
|
||||
Reference in New Issue
Block a user