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、私はアーカイブを同封します

Source: https://habr.com/ru/post/J203742/


All Articles