MySQL Shell 9.0  /  ...  /  注册 SQL 处理程序

10.4.1 注册 SQL 处理程序

您可以通过以下任一方法注册 SQL 处理程序

使用 MySQL Shell API 注册 SQL 处理程序

register_Sql_Handler 具有以下语法

    shell.register_sql_handler(name, description, prefixes, callback)
  • name:SQL 处理程序的唯一标识符。

  • description:对处理程序提供的 SQL 扩展的简要描述。

  • prefixes:标识此处理程序处理的 SQL 语句的前缀列表(字符串)。您必须至少定义一个前缀。

  • callback:标识匹配前缀的语句时要执行的函数名称。

    该函数必须具有以下签名

    function(session, sql): [结果]

使用 Python 装饰器注册 SQL 处理程序

您还可以使用 Python 装饰器 @sql_handler 注册 SQL 处理程序。装饰器使用 shell.registerSqlHandler 注册处理程序。参数的限制条件相同。

例如

        from mysqlsh.plugin_manager import sql_handler
        
        @sql_handler(prefixes=['SHOW '])
        "Prints a notice when a SHOW command is executed"
        def show_preprocessor(session, sql):
        
        print(f"SHOW COMMAND EXECUTED: {sql}")

列出已注册的 SQL 处理程序

要列出已注册的 SQL 处理程序,请使用 shell.list_sql_handlers。此函数返回所有已注册 SQL 处理程序的名称和描述。