はじめに
世の中にはMySQL Workbenchというものがあり、ビジュアルにごにょごにょできたりして便利らしいです。
なんかのきっかけでプラグインで拡張できると知りちょっといじってみることにしました。ぜんぜんMySQL Workbench使ったこと無いのに。
以下のバージョンを前提にしています。
- MySQL Workbench 6.1.4
なんとなくソースを落としてきてビルドしました。ビルドの詳細は割愛。
サンプルを実行する
まずは適当なサンプルプラグインを実行してみようと思い、ソースに含まれていたdoc/scripting_sample_grt.pyをインストールしてみました。
きちんとインストールできていることをプラグインマネージャから確認できました。データベースに接続していると、Tools/UtilitiesメニューからFill Random Queryが実行できる、はずです。
しかし、試しに実行してみると見事に失敗します。
activeQueryBufferがないとかエラー吐いているので、見なかったことにしましょう。世の中そんなこともあります。MySQL Bugsに報告済みの既知なやつかは確認していません。
Hello MySQL Workbench
ひとまず、これを参考にして、ダイアログを表示するサンプルを書いてみました。Hello World的なアレです。メッセージを表示して終了するだけです。
Luaでも拡張できるっぽいですが、ひとまずPythonでやってみました。
# coding:utf-8 from wb import * import grt import mforms ModuleInfo = DefineModule(name= "HelloWorld", author= "HAYASHI Kentaro", version="1.0") @ModuleInfo.plugin("org.gigo-ice.helloworld", caption= "Hello MySQL Workbench", input= [wbinputs.currentQueryBuffer()], pluginMenu= "SQL/Utilities") @ModuleInfo.export(grt.INT, grt.classes.db_query_QueryBuffer) def helloworld(qbuffer): result = mforms.Utilities.show_message(u"タイトル", '''Hello MySQL Workbench''', u"オーケー", u"キャンセル", u"その他") if result == mforms.ResultCancel: return 0 elif result == mforms.ResultOk: return 1 elif result == mforms.ResultOther: return -1
これをhello_world_grt.pyとかに保存して、MySQL Workbenchからインストールするとこんな感じになります。
実行してみましょう。
きちんとダイアログを表示でき、ボタンを選択すると終了します。
おわりに
MySQL Workbenchではmformsというのが用意されていて、GUI部品もPythonであれこれ叩けるようになっているみたいです。便利そうな気がしてきましたね。
ちなみに、mysql-workbenchを起動するときは、--log-to-stderrをつけておきましょう。プラグインが認識されないとかプラグインが動かないとか、実行したらエラーになるとかいろいろわかります。