若要创建新的扩展对象以提供一个或多个函数、数据类型或进一步的扩展对象,请使用内置扩展对象shell.createExtensionObject ()
函数,或shell.create_extension_object ()
在Python中:
shell.createExtensionObject ()
若要向扩展对象添加成员,请使用内置的shell.addExtensionObjectMember ()
函数,或shell.add_extension_object_member ()
在Python中:
壳。addExtensionObjectMember(对象,名称,成员[,定义])
地点:
对象
要在其中添加新成员的扩展对象。的名字
是新成员的名称。名称必须是有效的脚本标识符,因此第一个字符必须是字母或下划线字符,后面跟着任意数量的字母、数字或下划线字符。在已经添加到相同扩展对象的成员中,名称必须是唯一的,如果成员是函数,则名称不必与已定义函数的名称匹配。名称最好以驼峰格式指定,即使使用Python定义和添加成员也是如此。使用驼峰格式指定成员名可以使MySQL Shell自动执行命名约定。MySQL Shell在JavaScript模式下使用驼峰大小写,在Python模式下使用蛇形大小写。成员
是新成员的值,可以是以下任意值:受支持的基本数据类型。支持的数据类型为”没有一个”或”零”,”保龄球”,”数量”(整数或浮点数),”字符串”,”数组”,”字典”.
JavaScript或Python函数。可以在作为成员添加到扩展对象的函数体中使用本机代码,前提是接口(参数和返回值)限于扩展对象中支持的数据类型表10.1,“扩展对象支持的数据类型对”.在接口中使用其他数据类型可能导致未定义的行为。
另一个扩展对象。
定义
可选字典,可以包含成员的帮助信息,如果成员是函数,还可以包含函数接收的形参列表。帮助信息使用以下属性定义:短暂的
是成员的简要描述。细节
成员的详细描述,以字符串列表的形式提供。这是在使用MySQL Shell时提供的\帮助
命令。
函数的参数使用以下属性定义:
参数
描述函数接收的每个参数的字典列表。每个字典描述一个参数,可以包含以下键:的名字
(string, required):参数的名称。类型
(string, required):参数的数据类型,为之一”字符串”,”整数”,”保龄球”,”浮动”,”数组”,”字典”,或”对象”.如果类型为”对象”,类
或类
也可以使用Key。如果类型为”字符串”,值
也可以使用Key。如果类型为”字典”,选项
也可以使用Key。类
字符串,可选,当数据类型为”对象”):定义允许作为参数的对象类型。类
字符串列表,可选,当数据类型为”对象”):定义了允许作为形参的对象类型的类列表。的支持对象类型类
而且类
那些是由MySQL Shell api公开的,例如会话
,ClassicSession
,表格
,或集合
.如果将对象类型传递给不在此列表中的函数,则会引发错误。值
字符串列表,可选,当数据类型为”字符串”):对参数有效的值列表。如果将值传递给不在此列表中的函数,则会引发错误。选项
(选项列表,可选,当数据类型为”字典”):参数允许的选项列表。选项使用与参数相同的定义结构,除了if要求
未为选项指定,则默认为假
.MySQL Shell验证最终用户指定的选项,如果将选项传递给不在此列表中的函数,将引发错误。在MySQL Shell 8.0.17 ~ 8.0.19中,当数据类型为”字典”,但从MySQL Shell 8.0.20是可选的。如果您创建了一个没有选项列表的字典,那么最终用户为字典指定的任何选项都将由MySQL Shell直接传递给函数,而不需要验证。要求
(bool,可选):是否必须输入该参数。如果要求
没有为参数指定,则默认为真正的
.短暂的
(string,可选):作为帮助信息提供的参数的简短描述。细节
(字符串列表,可选):作为帮助信息提供的参数的详细描述。
一个扩展对象在被注册为MySQL Shell全局对象或作为成员添加到另一个被注册为MySQL Shell全局对象的扩展对象之前都被认为是在构建中。如果您试图在MySQL Shell中使用尚未注册的扩展对象,则会返回错误。
扩展对象可以混合包含Python中定义的成员和JavaScript中定义的成员。MySQL Shell管理数据从一种语言到另一种语言的参数和返回值的传输。表10.1,“扩展对象支持的数据类型对”显示MySQL Shell在语言之间传输数据时支持的数据类型,以及用作彼此表示的数据对:
在这两种语言中,扩展对象实际上是相同的对象。