From 3a1cea09397359d7a939b36ca54a3e4b13cc249d Mon Sep 17 00:00:00 2001 From: HibiKier <775757368@qq.com> Date: Sun, 4 Aug 2024 21:16:28 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=20=E6=B7=BB=E5=8A=A0exec=5Fsql?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zhenxun/builtin_plugins/superuser/exec_sql.py | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/zhenxun/builtin_plugins/superuser/exec_sql.py b/zhenxun/builtin_plugins/superuser/exec_sql.py index 86118baa..2badb14c 100644 --- a/zhenxun/builtin_plugins/superuser/exec_sql.py +++ b/zhenxun/builtin_plugins/superuser/exec_sql.py @@ -54,7 +54,9 @@ select a.tablename as name,d.description as desc from pg_tables a async def _(session: EventSession, message: UniMsg): sql_text = message.extract_plain_text().strip() if sql_text.startswith("exec"): - sql_text = sql_text[4:] + sql_text = sql_text[4:].strip() + if not sql_text: + await Text("需要执行的的SQL语句!").finish() logger.info(f"执行SQL语句: {sql_text}", "exec", session=session) try: if not sql_text.lower().startswith("select"): @@ -62,6 +64,20 @@ async def _(session: EventSession, message: UniMsg): else: db = Tortoise.get_connection("default") res = await db.execute_query_dict(sql_text) + _column = [] + for r in res: + if len(r) > len(_column): + _column = r.keys() + data_list = [] + for r in res: + data = [] + for c in _column: + data.append(r.get(c)) + data_list.append(data) + table = await ImageTemplate.table_page( + "EXEC", f"总共有 {len(data_list)} 条数据捏", list(_column), data_list + ) + await Image(table.pic2bytes()).send() except Exception as e: logger.error("执行 SQL 语句失败...", session=session, e=e) await Text(f"执行 SQL 语句失败... {type(e)}").finish() @@ -78,7 +94,9 @@ async def _(session: EventSession): for table in query: data_list.append([table["name"], table["desc"]]) logger.info("查看数据库所有表", "查看所有表", session=session) - table = await ImageTemplate.table_page("数据库表", "", column_name, data_list) + table = await ImageTemplate.table_page( + "数据库表", f"总共有 {len(data_list)} 张表捏", column_name, data_list + ) await Image(table.pic2bytes()).send() except Exception as e: logger.error("获取表数据失败...", session=session, e=e)