From 057001f0bdf841da6eea1d7f91b1203fa728b55d Mon Sep 17 00:00:00 2001 From: HibiKier <775757368@qq.com> Date: Sat, 7 Sep 2024 16:46:56 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E6=94=AF=E6=8C=81mysql=EF=BC=8Cpsq?= =?UTF-8?q?l=EF=BC=8Csqlite=E9=9A=8F=E6=9C=BA=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zhenxun/builtin_plugins/check/data_source.py | 9 ++++----- zhenxun/configs/config.py | 8 ++++++++ zhenxun/utils/common_utils.py | 18 ++++++++++++++++++ 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/zhenxun/builtin_plugins/check/data_source.py b/zhenxun/builtin_plugins/check/data_source.py index 325e413a..498c7aca 100644 --- a/zhenxun/builtin_plugins/check/data_source.py +++ b/zhenxun/builtin_plugins/check/data_source.py @@ -1,16 +1,15 @@ import platform -from dataclasses import dataclass from pathlib import Path +from dataclasses import dataclass +import psutil import cpuinfo import nonebot -import psutil -from httpx import ConnectTimeout, NetworkError -from nonebot.utils import run_sync from pydantic import BaseModel +from nonebot.utils import run_sync -from zhenxun.configs.config import BotConfig from zhenxun.services.log import logger +from zhenxun.configs.config import BotConfig from zhenxun.utils.http_utils import AsyncHttpx BAIDU_URL = "https://www.baidu.com/" diff --git a/zhenxun/configs/config.py b/zhenxun/configs/config.py index 56f0fdb9..86583f19 100644 --- a/zhenxun/configs/config.py +++ b/zhenxun/configs/config.py @@ -32,6 +32,14 @@ class BotSetting(BaseModel): return random.choice(platform_superuser) return "" + def get_sql_type(self) -> str: + """获取数据库类型 + + 返回: + str: 数据库类型, postgres, aiomysql, sqlite + """ + return self.db_url.split(":", 1)[0] if self.db_url else "" + Config = ConfigsManager(Path() / "data" / "configs" / "plugins2config.yaml") diff --git a/zhenxun/utils/common_utils.py b/zhenxun/utils/common_utils.py index f3375c8f..06722aa9 100644 --- a/zhenxun/utils/common_utils.py +++ b/zhenxun/utils/common_utils.py @@ -1,3 +1,5 @@ +from zhenxun.services.log import logger +from zhenxun.configs.config import BotConfig from zhenxun.models.task_info import TaskInfo from zhenxun.models.ban_console import BanConsole from zhenxun.models.group_console import GroupConsole @@ -34,3 +36,19 @@ class CommonUtils: """群组是否被ban""" return True return False + + +class SqlUtils: + + @classmethod + def random(cls, query, limit: int = 1) -> str: + db_class_name = BotConfig.get_sql_type() + if "postgres" in db_class_name or "sqlite" in db_class_name: + query = f"{query.sql()} ORDER BY RANDOM() LIMIT {limit};" + elif "mysql" in db_class_name: + query = f"{query.sql()} ORDER BY RAND() LIMIT {limit};" + else: + logger.warning( + f"Unsupported database type: {db_class_name}", query.__module__ + ) + return query