RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Приложение C. Расширение MySQL Workbench

MySQL Workbench обеспечивает расширение и систему скриптов, которая позволяет разработчику расширить возможности MySQL Workbench. В то время как ядро MySQL Workbench написано, используя C++, возможно использовать эту базовую функциональность, используя язык Python. MySQL Workbench также обеспечивает доступ к кросс-платформенной библиотеке GUI, MForms, которая позволяет создание расширений, которые показывают графический интерфейс пользователя.

Система позволяет следующие возможности:

  • Автоматизируйте общие задачи.

  • Расширьте пользовательский интерфейс Workbench.
  • Создайте Инструменты/Плагины (код, который может быть вызван от системы меню Workbench).
  • Управляйте схемами.
  • Создайте свои возможности Workbench.

C.1. GRT и организация данных в Workbench

Generic RunTime (GRT) является внутренней системой, используемой MySQL Workbench, чтобы хранить данные о документе. Это также механизм, которым Workbench может взаимодействовать с модулями и плагинами. Данные модели Workbench, такие как диаграммы, схемы и таблицы, хранятся в иерархии объектов, к которым может получить доступ любой плагин. Информация представляется, используя стандартные типы данных: целые числа, числа double, строки, словари, списки и объекты.

К GRT можно получить доступ, используя язык Python. Осведомленность требуется относительно того, как типы данных GRT отображаются в Python. Например, целое число GRT и типы данных String рассматриваются как соответствующие типы данных Python. Списки и словари сохраняются в их внутреннем представлении, но можно обычно рассматривать как списки и словари Python и получать доступ обычным способом. Объекты содержат поля данных и методы, но GRT признает только объекты от предзарегистрированной иерархии классов.

Возможно полностью исследовать классы в GRT с использованием Workbench Scripting Shell. Точки в именах классов изменяются на подчеркивания в версиях для Python. Например, db.mysql.Table будет db_mysql_Table в Python.

Дерево объектов приложения (GRT Tree)

Как упомянуто ранее, данные о документе MySQL Workbench хранятся в иерархии объектов. Эта иерархия известна как GRT, к ней можно получить доступ с использованием Python или C++. Будьте осторожны, изменяя дерево GRT, поскольку ошибки могут привести к повреждению документа. Резервные копии должны быть сделаны прежде, чем управлять деревом. Доступ только для чтения к дереву это самый безопасный подход и достаточен в большинстве случаев.

Главные узлы в дереве объекта приложения

Таблица C.1. Главные узлы в дереве объекта приложения

Узел Описание
wb.registry Данные приложения, такие как регистрация плагинов, список редакторов и варианты.
wb.customData Универсальный словарь для данных можно использовать, чтобы хранить собственные данные. Этот словарь сохраняется и перезагружается с Workbench, он глобален (не определен для документа).
wb.options Содержит некоторые опции по умолчанию, которые используются Workbench.
wb.rdbmsMgmt Внутренняя регистрация поддержанных модулей, известных типов данных.
wb.doc В настоящее время загруженный документ.
wb.doc.physicalModels[0] В настоящее время загруженный объект модели, содержит каталог базы данных и диаграммы.
wb.doc.physicalModels[0].catalog Каталог базы данных для модели. Содержит список схем.
wb.doc.physicalModels[0]catalog.schemata Список схем в модели. К отдельной схеме можно получить доступ как к списку: schemata[0], schemata[1] ...
wb.doc.physicalModels[0].catalog.schemata[0].tables (.views, .routines, ...) Списки таблиц, представлений и подпрограмм в схеме.
wb.doc.physicalModels[0].diagrams Список EER-диаграмм в модели.
wb.doc.physicalModels[0].diagrams[0].figures (.layers, .connections, ...) Список рисунков, слоев и связей (отношений) в диаграмме.

C.2. Модули

В GRT модули это библиотеки, содержащие список функций, которые экспортируются для использования кодом в других модулях, скриптах или самим Workbench. Модули могут быть написаны на C++ или Python, но типы данных, используемые для аргументов и возвращаемого значения, должны быть типами GRT.

Модули GRT подобны модулям Python, но импортируются из встроенного модуля grt вместо внешнего файла. Список модулей, загруженных в grt, получен из grt.modules. Модули могут быть импортированы в Python, используя такой запрос, как from grt.modules import WbModel.

Чтобы экспортировать функции как модуль из кода Python, выполните следующие шаги:

  1. Исходный файл должен быть расположен в пользовательском каталоге модулей. Этот путь показан в скриптах Workbench Scripting Shell с меткой Looking for user plugins in. Также возможно установить файл, используя главное меню, пункты Scripting, Install Plugin/Module File.

    Расположение файлов модуля по умолчанию:

    Таблица C.2. Пользовательское расположение файла модуля по умолчанию

    Операционная система Путь к файлу
    Windows %AppData%\MySQL\Workbench\modules
    macOS ~username/Library/Application Support/MySQL/Workbench/modules
    Linux ~username/.mysql/workbench/modules

  2. У имени исходного файла должно быть расширение _grt.py, например, my_module_grt.py.

  3. Некоторые метаданные модуля должны быть определены. Это может быть сделано, используя функцию DefineModule из модуля wb:
    from wb import *
    ModuleInfo = DefineModule(name='MyModule', author='Your Name', version='1.0')
    
  4. Функции, которые будут экспортироваться, требуют, чтобы их подпись была объявлена. Это достигается, используя экспортного декоратора в ранее созданном объекте 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: Список других значений. Возможно определить тип содержания как кортеж в форме (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

C.3. Плагины и инструменты

Плагины это специальные модули, которые выставляются пользователю через Workbench GUI. Это, как правило, делается, используя главное меню или контекстно-зависимое меню. Большая часть функциональности MySQL Workbench осуществляется, используя плагины, например, таблица, представление и обычные редакторы это родные плагины C++, как и мастера. Средство Administrator в MySQL Workbench осуществляется полностью как плагин в Python.

Плагин может быть простой функцией, которая выполняет некоторое действие на входе и заканчивается без дальнейшего взаимодействия с пользователем. Примеры этого включают автоподготовку диаграммы или внесение пакетных изменений в объекты. Чтобы создать простой плагин, функция должна быть расположена в модуле и объявлена как плагин, используя декоратор plugin объекта ModuleInfo.

У плагинов может быть неопределенное время выполнения, как тогда, когда их ведет пользователь через графический интерфейс пользователя. Дело обстоит так для редакторов объектов и мастеров в MySQL Workbench. Хотя для мастера тип плагина должен быть объявлен обычным способом, только точка входа плагина должна быть выполнена в функции плагина, поскольку большая часть дополнительной функциональности будет вызвана в результате взаимодействия пользователя с GUI.

Перезагрузка плагина требует, чтобы MySQL Workbench был перезапущен.

Импортированные файлы плагинов (и их собранные коллеги) хранятся здесь:

Таблица C.3. Пользовательское расположение файла плагина

Операционная система Путь к файлу
Windows%AppData%\MySQL\Workbench\modules
macOS ~username/Library/Application Support/MySQL/Workbench/modules
Linux~username/.mysql/workbench/modules

Объявите плагин, используя этот синтаксис:

@ModuleInfo.plugin(plugin_name, caption, [input], [groups], [pluginMenu])

Эти параметры определяются следующим образом:

  • plugin_name: уникальное имя для плагина. Это может содержать только алфавитно-цифровые символы, точки и подчеркивания.

  • caption: заголовок, чтобы использовать для плагина в меню.
  • input: дополнительный список входных аргументов.
  • groups: Дополнительный список групп плагин, к которым принадлежит. Признанные значения:

    • Overview/Utility: Контекстное меню в Model Overview.
    • Model/Utility: Меню для объектов диаграммы.
    • Menu/<category>: Подменю Plugins в главном меню.

  • pluginMenu: Дополнительное название подменю в меню Plugins, где плагин должен появиться. Например, Catalog, Objects, Utilities. Это эквивалентно добавлению Menu/<category> в списке групп.

C.4. Добавление GUI к плагину, используя MForms

MySQL Workbench осуществляется с бэкендом ядра C++ и родным фронтендом для каждой поддерживаемой платформы. В настоящее время фронтенд осуществляется с Windows Forms на Microsoft Windows, GTK+ в Linux и с Cocoa в OS X/macOS. Этот подход разрешает приложению иметь родной стиль, уменьшая объем работы, требуемый, чтобы вести проект. Однако функциональность GUI, требуемая MySQL Workbench, может быть поддержана подмножеством графических операций. Они осуществляются в кросс-платформенной библиотеке GUI MForms. Это уменьшает усилия по развитию, потому что разработчики плагинов могут использовать MForms вместо того, чтобы писать фронтенд для каждой поддерживаемой платформы. Это также помогает последовательности операции через все платформы. MForms написан на C++, но обеспечивает интерфейс Python. Чтобы использовать его, код Python должен импортировать модуль mforms.

Контейнеры MForms

Учитывая проблемы использования системы абсолютной координаты с различными платформами, MForms использует контейнеры, которые выполняют автоматическое выравнивание. Основные контейнеры, которые обеспечивает MForms, включают:

  • Form: Окно верхнего уровня, которое может содержать единственный контроль, обычно другой контейнер. Окно будет измерено автоматически, чтобы соответствовать его содержанию, но может также быть измерено статически.

  • Box: Этот контейнер может быть заполнен одним или более средствами управления в вертикальном или горизонтальном макете. Каждый дочерний элемент управления может использовать минимум требуемого пространства или заполнить область в направлении расположения. В перпендикуляре направления к расположению, например вертикальному в горизонтальном макете, будет использоваться самый маленький размер, который может приспособить все дочерние элементы управления. Так, в этом примере использовалась бы наименьшая возможная высота, чтобы приспосабливать средства управления.
  • Table: Этот контейнер может организовать одно или более средств управления в сетке. Число строк и столбцов в таблице и местоположения средств управления в сетке могут быть определены разработчиком.
  • ScrollView: Этот контейнер может содержать единственный дочерний элемент управления и добавляет полосы прокрутки, если содержание не соответствует свободному месту.

C.5. Workbench Scripting Shell

Workbench Scripting Shell обеспечивает средство для ввода и выполнения скриптов Python. С помощью оболочки скриптов MySQL Workbench может поддержать новое поведение и источники данных, используя код, написанный на Python. Оболочка может также использоваться, чтобы исследовать текущие средства Workbench Generic RunTime (GRT).

Оболочка скриптов не только полезна для расширения MySQL Workbench. Можно использовать файл скрипта из командной строки оболочки скриптов, чтобы выполнить повторяющиеся задачи программно.

У MySQL также есть продукт под названием MySQL Utilities, который отличается от Workbench Scripting Shell.

C.5.1. Исследуя скрипты Workbench Scripting Shell

Чтобы открыть Workbench Scripting Shell, выберите Scripting, Scripting Shell из главного меню. Можно также открыть Workbench Scripting Shell, используя Control + F3 в Windows и Linux или Command + F3 в macOS или нажимая кнопку оболочки выше навигатора диаграмм EER. Workbench Scripting Shell тогда откроется в новом диалоге.

Рис. C.1. Workbench Scripting Shell

Content is described in the surrounding text.

C.5.2. Окно Shell

Workbench Scripting Shell прежде всего используется для управления скриптами Python или непосредственно печати команд в Python. Однако можно также использовать его, чтобы получить доступ к функциям Workbench Scripting Shell Scripting Library, глобальным функциям и объектам. Чтобы видеть доступные команды, напечатайте ?. Можно также вырезать и вставить текст в и из окна оболочки.

Вкладка Snippets это временная память для хранения фрагментов кода, который облегчает повторное использование и выполнение кода в MySQL Workbench.

Рис. C.2. Workbench Scripting Shell: вкладка Snippets

Content is described in the surrounding text.

Открытые вкладки файла скрипта справа от вкладки Snippets. Вкладки скрипта маркированы именем файла скрипта или Unnamed для отрывков без имени. Можно вырезать и вставить их или щелкнуть правой кнопкой мыши по отрывку, чтобы открыть контекстное меню с вариантами Execute Snippet, Send to Script Editor и Copy To Clipboard.

В то время как отдельные команды могут быть введены в оболочку, также возможно управлять более длинным скриптом, сохраненным во внешнем файле, используя меню Scripting, Run Workbench Script File. Когда скриптами управляют за пределами оболочки, чтобы видеть вывод, используйте меню View, Output.

Также возможно управлять файлами скрипта непосредственно от оболочки. Для получения дополнительной информации о файлах скрипта напечатайте ? run в Workbench Scripting Shell. Следующее сообщение будет показано:

Help Topics
-----------
grt       General information about the Workbench runtime
scripting Practical information when working on scripts and modules for Workbench
wbdata    Summary about Workbench model data organization
modules   Information about Workbench module usage
plugins   Information about writing Plugins and Modules for Workbench
Type '? [topic]' to get help on the topic.

Custom Python Modules
---------------------
 grt Module to work with Workbench runtime (grt) objects
 grt.root The root object in the internal Workbench object hierarchy
 grt.modules Location where Workbench modules are available
 grt.classes List of classes known to the GRT system
 mforms A Module to access the cross-platform UI toolkit used in some Workbench features
 wb Utility module for creating Workbench plugins

Type 'help(module/object/function)' to get information about a module,
                                    object or function.
Type 'dir(object)'to get a quick list of methods an object has.

For an introductory tutorial on the Python language, visit
http://docs.python.org/tutorial/
For general Python and library reference documentation, visit
http://python.org/doc/

В Workbench Scripting Shell есть пять вкладок наверху панели с левой стороны: Files, Globals, Classes, and Modules и Notifications.

Исключение брошено, пытаясь использовать input() или читать из stdin.

C.5.3. Вкладки Files, Globals, Classes, Modules и Notifications

Workbench Scripting Shell показывает вкладки Files, Globals, Classes, Modules и Notifications в дополнение к главной вкладке Shell.

Вкладка Files

Вкладка Files перечисляет папки и файлы для определенных пользователями файлов скрипта. Категории файлового браузера: User Scripts, User Modules и User Libraries.

Рис. C.3. The Workbench Scripting Shell: вкладка Files

Content is described in the surrounding text.

По умолчанию скрипты сохранены в каталоге scripts/ вашего каталога конфигурации MySQL Workbench. В следующей таблице перечислены местоположения по умолчанию для каждой платформы.

Таблица C.4. Местоположение скриптов по умолчанию

Операционная система Путь scripts/ по умолчанию
Linux ~/.mysql/workbench/scripts
macOS ~/Library/Application\ Support/MySQL/Workbench/scripts/
Windows 7 C:\Users\[user]\AppData\Roaming\MySQL\Workbench\scripts\

Вкладка Globals

Наверху окна список, который используется, чтобы выбрать отправную точку или корень дерева GRT Globals, показанного ниже него. По умолчанию эта отправная точка корень дерева, то есть '/'. Можно расширить или свернуть дерево GRT Globals, оно является структурой, в которой MySQL Workbench хранит данные о документе. Нажатие на любой пункт приводит к его имени и значению, показываемой в панели ниже дерева.

Рис. C.4. Workbench Scripting Shell: вкладка Globals

Content is described in the surrounding text.

Вкладка Classes

class это пользовательский тип данных, сформированный, объединяя примитивные типы данных: целые числа, строки, списки и объекты. Эта вкладка показывает определения классов, используемых объектами во вкладке Modules. Нажатие на класс заставляет краткое описание класса быть показанным в панели ниже исследователя классов.

Рис. C.5. Workbench Scripting Shell: вкладка Classes

Content is described in the surrounding text.

Когда выбрана вкладка Classes, список показывает следующие пункты:

  • Group by Name: Группировка именем объекта.

  • Group by Hierarchy: Группировка наследованием.
  • Group by Package: Группировка функциональностью.

Представление по умолчанию для этой вкладки: Group By Name. Это представление показывает все различные объекты в алфавитном порядке. Щелкните значок + или дважды щелкните по пакету, чтобы показать свойства структуры.

Если вы переключитесь на иерархическое представление, вы будете видеть GrtObject: родительский объект, из которого получены все другие объекты.

Вкладка Modules

Вкладка Modules нужна, чтобы просмотреть установленные модули MySQL Workbench и их функции. Нажатие на модуль в исследователе заставляет детали быть показанными в группе ниже исследователя. Это средство полезно для исследования доступных модулей и их функций. Это также способ проверить, были ли модули правильно установлены.

Рис. C.6. Workbench Scripting Shell: вкладка Modules

Content is described in the surrounding text.

Вкладка Notifications

Вкладка Notification включает набор классов notification, которые используются модулями MySQL Workbench. Щелкните по классу уведомления для описания его использования.

Рис. C.7. Workbench Scripting Shell: вкладка Notifications

Content is described in the surrounding text.

C.6. Обучающая программа: написание плагинов

Обучающие программы в этой секции демонстрируют, как расширить MySQL Workbench, создав плагины.

C.6.1. Обучающая программа: произведите код PHP, чтобы создать связь с PDO_MySQL

MySQL Workbench включает плагин, который производит код PHP с расширением mysqli. Эта обучающая программа показывает, как произвести код с расширением PDO_MySQL для PHP. Вы могли бы выбрать иное расширение или иной язык в целом, можно приспособить произведенный код соответственно.

Чтобы начать, рассмотрите код, показанный в примере, который следует.

# import the wb module
from wb import DefineModule, wbinputs
# import the grt module
import grt
# import the mforms module for GUI stuff
import mforms

# define this Python module as a GRT module
ModuleInfo = DefineModule(name= "MySQLPDO", author= "Yours Truly", version="1.0")

@ModuleInfo.plugin("info.yourstruly.wb.mysqlpdo", caption= "MySQL PDO (Connect to Server)", input= [wbinputs.currentSQLEditor()], pluginMenu= "SQL/Utilities")
@ModuleInfo.export(grt.INT, grt.classes.db_query_Editor)

def mysqlpdo(editor):
"""Copies PHP code to connect to the active MySQL connection using PDO, to the clipboard.
"""
# Values depend on the active connection type
if editor.connection:
   conn = editor.connection
if conn.driver.name == "MysqlNativeSocket":
   params = {
     "host" : "",
     "port" : "",
     "user" : conn.parameterValues["userName"],
     "socket" : conn.parameterValues["socket"],
     "dbname" : editor.defaultSchema,
     "dsn" : "mysql:unix_socket={$socket};dbname={$dbname}"
   }
else:
params = {
  "host" : conn.parameterValues["hostName"],
  "port" : conn.parameterValues["port"] if conn.parameterValues["port"] else 3306,
  "user" : conn.parameterValues["userName"],
  "socket" : "",
  "dbname" : editor.defaultSchema,
  "dsn" : "mysql:host={$host};port={$port};dbname={$dbname}"
}
text = """$host="%(host)s";
$port=%(port)s;
$socket="%(socket)s";
$user="%(user)s";
$password="";
$dbname="%(dbname)s";

try {
  $dbh = new PDO("%(dsn)s", $user, $password));
} catch (PDOException $e) {
  echo 'Connection failed: ' . $e->getMessage();
}

""" % params
mforms.Utilities.set_clipboard_text(text)
mforms.App.get().set_status_text("Copied PHP code to clipboard")
return 0

Этот простой плагин производит код PHP, чтобы создать подключение MySQL, используя PHP PDO_MySQL. Определение DSN зависит от типа подключения в MySQL Workbench.

Чтобы произвести код PHP для связи, сначала установите плагин следующим образом:

  1. Скопируйте код в новый файл. Имя файла, используемое в этом примере, php-pdo-connect_grt.py, но можно использовать другое имя, пока есть суффикс _grt.py.
  2. Запустите MySQL Workbench. Нажмите Scripting, Install Plugin/Module из меню, чтобы открыть файловый браузер. Выберите файл, созданный кодом на предыдущем шаге, в этом случае php-pdo-connect_grt.py.

    Вы могли скопировать файл непосредственно в каталог плагинов вместо того, чтобы использовать интерфейс Install Plugin/Module. Результатом было бы то же самое.

  3. Перезапустите MySQL Workbench. Этот шаг производит собранный bytecode-файл (.pyc) из вашего исходного файла. В этом примере это производит файл php-pdo-connect_grt.pyc.
  4. После перезапуска MySQL Workbench загрузите подключение MySQL, чтобы использовать, чтобы произвести код PHP. Из меню нажмите Tools, Utilities, MySQL PDO (Connect to Server), который является Caption, определенным в рамках кода плагина.

    Это действие копирует произведенный код PHP в буфер обмена на вашей системе. Следующий пример связи определяет "sakila" как базу данных по умолчанию в произведенном коде.

    $host="localhost";
    $port=3306;
    $socket="";
    $user="root";
    $password="";
    $dbname="sakila";
    
    try {
      $dbh = new PDO("mysql:host={$host};port={$port};dbname={$dbname}",
                     $user, $password));
    } catch (PDOException $e) {
      echo 'Connection failed: ' . $e->getMessage();
    }
    

C.6.2. Обучающая программа: создание внешних ключей с MyISAM

Диаграммы EER полезны для визуализации сложных схем базы данных. Они часто создаются для существующих баз данных, чтобы разъяснить их цель или описать их. MySQL Workbench предоставляет средства для инженерного анализа существующих баз данных и затем создания диаграммы EER автоматически. В этом случае линии связей между внешними ключами в таблице будут автоматически нарисованы. Это графическое представление делает отношения между таблицаами намного легче понять. Однако более старый механизм хранения MyISAM не включает поддержку внешних ключей. Это означает, что таблицы MyISAM, которые перепроектированы, автоматически не покажут линии связей между таблицами, делая базу данных тяжелее в понимании. Плагин, созданный в этой обучающей программе, обходит эту проблему при помощи того, что соглашение о присвоении имен часто используется для внешних ключей: tablename_primarykeyname. Используя это соглашение, могут автоматически быть созданы внешние ключи после того, как база данных перепроектирована, что приведет к линиям связей в диаграмме EER.

Логика

Основной алгоритм для этой задачи был бы следующим:

for each table in the schema
  for each column in the table
    look for another table whose name and primary key name
    match the current column name
    if such a table is found, add a foreign key referencing it

Поскольку повторение списка заполненной таблицы, чтобы найти совпадение может быть медленным для моделей с большим количеством таблиц, необходимо его оптимизировать, предварительно вычисляя все возможные имена внешнего ключа в данной схеме.

import grt

def auto_create_fks(schema):
  fk_name_format = "%(table)s_%(pk)s"
  possible_fks = {}
  # create the list of possible foreign keys from the list of tables
  for table in schema.tables:
    if table.primaryKey:
       format_args = {'table':table.name, 'pk':table.primaryKey.name}
    fkname = fk_name_format % format_args
    possible_fks[fkname] = table
  # go through all tables in schema, this time to find columns that may be a fk
  for table in schema.tables:
    for column in table.columns:
      if possible_fks.has_key(column.name):
         ref_table = possible_fks[column.name]
      if ref_table.primaryKey.formattedType != column.type:
         continue
      fk = table.createForeignKey(column.name+"_fk")
      fk.referencedTable = ref_table
      fk.columns.append(column)
      fk.referencedColumn.append(ref_table.primaryKey)
      print "Created foreign key %s from %s.%s to %s.%s" \
            % (fk.name, table.name, column.name, ref_table.name,
            ref_table.primaryKey.name)
auto_create_fks(grt.root.wb.doc.physicalModels[0].catalog.schemata[0])

Создание плагина из скрипта

Чтобы создать плагин из произвольного скрипта, сначала необходимо сделать файл модулем и экспортировать необходимую функцию из него. Тогда необходимо объявить модуль как плагин и определить аргументы типа возврата и входные аргументы.

from wb import *
import grt

ModuleInfo = DefineModule(name="AutoFK", author="John Doe", version="1.0")
  @ModuleInfo.plugin("sample.createGuessedForeignKeys",
  caption="Create Foreign Keys from ColumnNames",
  input=[wbinputs.objectOfClass("db.mysql.schema")],
  groups=["Overview/Utility"])
@ModuleInfo.export(grt.INT, grt.classes.db_mysql_Schema)
def auto_create_fks(schema):
 ...

С добавлением предыдущего кода функция auto_create_fks() экспортируется и будет добавлена к контекстному меню схемы. Когда вызвана, она получает в настоящее время выбранную схему как свой вход.

Поиск

 

Найди своих коллег!

Вы можете направить письмо администратору этой странички, Алексею Паутову. mailto:alexey.v.pautov@mail.ru