Sublime Text 2のOracle DBでSQLクエリを実行する

人気のあるSublime Text 2エディターに誰もが慣れ親しんでいることを願っています。リクエストを選択して組み合わせを押すだけで、BD Oracleでクエリをエディターから直接すばやく呼び出すためのプラグインを作成することで、私の生活を楽にする方法についての経験を共有したいと思います。



Sublime Textには、スピード、使いやすさ、クロスプラットフォームで人気のある、いわゆる拡張機能が豊富にあります。 すべての味と色のパッケージとプラグイン。 しかし、SQLクエリを呼び出すためのプラグインは見つかりませんでした(間違っている場合は、共有していただければ幸いです)。 まあまあ、いいえ-問題ありません、あなた自身で書きます。



ドキュメントを読んで、いくつかのを見てから始めましょう



プラグインは非常に簡単に機能します。リクエストを選択し、組み合わせを押すと、結果が新しいウィンドウに表示されます。



まず、新しいプラグインを作成しますツール->新しいプラグイン

import sublime, sublime_plugin class ExampleCommand(sublime_plugin.TextCommand): def run(self, edit): self.view.insert(edit, 0, "Hello, World!")
      
      





すぐにOquery.pyという名前で名前を付けて保存しますが、SublimeはUserフォルダーに保存するように提供していますが、OqueryフォルダーのPackagesフォルダーに1レベル上位に保存します。



ベースと通信するには、 cx_Oracleクラスが必要です。 ダウンロードしてOQueryフォルダーに戻り、その中にlibフォルダーを作成します。このフォルダーに必要なライブラリーを格納します。 その中に、ダウンロードしたアーカイブをcx_Oracleフォルダーに保存します。



リクエストレスポンスを素敵なテーブルの形式で提供したいのですが、このためにすでに適したプラグインがあります。 同じことを行います。フォルダをダウンロードして解凍し、prettytableに名前を変更します。



データベース設定を保存するには、Oquery.sublime-settigs構成ファイルが必要です。 それを作成し、プラグインのルートフォルダーにコンテンツと共に保存します(例):

 { "host" : "localhost", "port" : 1521, "dbname" : "demoDB", "username" : "user1", "password" : "pass" }
      
      





これで、プラグイン自体を作成することになりました。



ファイルの先頭で、エンコードを宣言し、データベース自体へのコネクタや出力プレートのライブラリなど、必要なモジュールをインポートします

 # coding=utf-8 import sys import os sys.path.append(os.path.dirname(sys.executable)) sys.path.append(os.path.join(os.path.dirname(__file__), "lib","cx_Oracle")) sys.path.append(os.path.join(os.path.dirname(__file__), "lib","prettytable")) import sublime import sublime_plugin import cx_Oracle import unicodedata import prettytable
      
      









 sys.path.append(os.path.join(os.path.dirname(__file__), "lib","cx_Oracle")) sys.path.append(os.path.join(os.path.dirname(__file__), "lib","prettytable"))
      
      





ライブラリを探す場所を崇高に伝えます。 プリティテーブルSublimeを接続するとき、私はunicodedataモジュールが存在しないことを誓いましたが、Sublimeには非常にunicodedataモジュールの場所がわからないというバグがあるため、単純にインポートしてもエラーは解消されませんでした。 あまりグーグルではない、私は行を追加することで解決策を見つけた

 sys.path.append(os.path.dirname(sys.executable))
      
      





そして、問題は解決されています。



チーム自体に到達する

 class OqueryCommand(sublime_plugin.TextCommand): def run(self, edit): #   view view = self.view #      region = view.sel()[0] if not region.empty(): #   ,     selection = view.substr(region) try: #          Oquery.sublime-settings settings = sublime.load_settings('Oquery.sublime-settings') #    db = cx_Oracle.connect(str(settings.get('username')), str(settings.get('password')), settings.get('host')+':'+str(settings.get('port'))+'/'+settings.get('dbname')) except cx_Oracle.DatabaseError, e: sublime.message_dialog(str(e)) else: #   cursor = db.cursor() try: #    cursor.execute(selection) except cx_Oracle.DatabaseError, e: sublime.message_dialog(str(e)) else: #          pt = prettytable.from_db_cursor(cursor) #     tableStr = pt.get_string() #    output = view.window().new_file(); #      output.insert(edit, 0, tableStr) else: sublime.message_dialog('Select a proper SQL query')
      
      





以上です。 しかし、チームに挑戦するための組み合わせを宣言する必要もあります。 これは非常に簡単に設定->キーバインディングユーザーで行われます。 そして、それに1行を追加します

 [ { "keys": ["ctrl+o", "ctrl+r"], "command": "oquery" } ]
      
      





プラグインは(ctrl + o)+ rの組み合わせで機能します。 別のものを選択できます。



これですべてのリクエストが選択され、ボタンを押すだけで新しいウィンドウに回答が表示されます。 それは素晴らしいことではありませんか?



必要に応じて、他のデータベースにすべてをやり直すことができます。



だれに怠iness、私はアーカイブを同封します



All Articles