在 GRT 模块中是包含函数列表的库,这些函数被导出以供其他模块、脚本或 Workbench 本身中的代码使用。模块可以用 C++ 或 Python 编写,但用于参数和返回值的数据类型必须是 GRT 类型。
GRT 模块类似于 Python 模块,但是是从内置grt
模块导入的,而不是直接从外部文件导入的。加载到模块中的模块列表
grt
是从
grt.modules
. 模块可以使用诸如from grt.modules import
WbModel
.
要从 Python 代码中将函数导出为模块,请执行以下步骤:
-
源文件必须位于用户模块文件夹中。此路径显示在 Workbench Scripting Shell 中,标签 为 Looking for user plugins in。也可以使用主菜单项 Scripting和Install Plugin/Module File 安装文件。
表 C.2 默认用户模块文件位置
操作系统 文件路径 视窗 %AppData%\MySQL\Workbench\modules 苹果系统 ~用户名/Library/Application Support/MySQL/Workbench/modules Linux ~用户名/.mysql/workbench/modules
源文件名必须有扩展名
_grt.py
;例如,my_module_grt.py
。-
必须定义一些模块元数据。这可以使用
DefineModule
wb 模块中的函数来完成:from wb import * ModuleInfo = DefineModule(name='MyModule', author='Your Name', version='1.0')
-
要导出的函数需要声明其签名。这是使用先前创建的 ModuleInfo 对象中的导出装饰器实现的:
@ModuleInfo.export(grt.INT, grt.STRING) def checkString(s): ...
对于该
export
语句,首先列出返回类型,然后是输入参数类型,指定为 GRT 类型名称。可以使用以下类型名称:grt.INT
:一个整数值。也用于布尔值。grt.DOUBLE
:浮点数值。grt.STRING
: UTF-8 或 ASCII 字符串数据。grt.DICT
:键值字典项。键必须是字符串。grt.LIST
:其他值的列表。可以在 form 中将内容的类型指定为元组(grt.LIST, <type-or-class>)
。例如,(grt.LIST, grt.STRING) 表示字符串列表。对于表对象列表,将指定以下内容:(grt.LIST, grt.classes.db_table)
.grt.OBJECT
: GRT 对象或 GRT 类对象的实例,来自grt.classes
.
笔记这些类型在
grt
模块中定义,必须先导入才能使用。
以下代码片段说明了声明一个导出单个函数的模块:
from wb import *
import grt
ModuleInfo = DefineModule(name='MyModule', author="your name", version='1.0')
@ModuleInfo.export(grt.DOUBLE, grt.STRING, (grt.LIST, grt.DOUBLE))
def printListSum(message, doubleList):
sum = 0
for d in doubleList:
sum = sum + d
print message, sum
return sum