рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рд▓реЛрдХрдкреНрд░рд┐рдп рдЙрджрд╛рддреНрдд рдкрд╛рда 2 рд╕рдВрдкрд╛рджрдХ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреИрд╕реЗ рдореИрдВ рд╕рдВрдкрд╛рджрдХ рд╕реЗ рд╕реАрдзреЗ рдмреАрдбреА рдУрд░реЗрдХрд▓ рдореЗрдВ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдкреНрд▓рдЧ-рдЗрди рд▓рд┐рдЦрдХрд░ рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдмрд╕ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рдФрд░ рд╕рдВрдпреЛрдЬрди рдХреЛ рджрдмрд╛рдХрд░ред
рдЧрддрд┐, рд╕рд╣рдЬрддрд╛ рдФрд░ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рдкрд╕рдВрджреАрджрд╛, рдЙрджрд╛рддреНрдд рдкрд╛рда рдмрд╣реБрдд рд╕рд╛рд░реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рд╕рдореГрджреНрдз рд╣реИ, рддрдерд╛рдХрдерд┐рддред рд╣рд░ рд╕реНрд╡рд╛рдж рдФрд░ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреБрд▓ рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ SQL рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧ-рдЗрди рдирд╣реАрдВ рдорд┐рд▓рд╛ (рдпрджрд┐ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ)ред рдЕрдЪреНрдЫрд╛ рд╣реИ, рдирд╣реАрдВ - рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ, рд╣рдо рдЖрдкрдХрд╛ рдЕрдкрдирд╛ рд▓рд┐рдЦреЗрдВрдЧреЗред
рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рдХреБрдЫ
рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж
, рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рдкреНрд▓рдЧрдЗрди рдмрд╣реБрдд рд╕рд░рд▓ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛: рдЕрдиреБрд░реЛрдз рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рд╕рдВрдпреЛрдЬрди рджрдмрд╛рдПрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдирдИ рд╡рд┐рдВрдбреЛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдирдпрд╛ рдкреНрд▓рдЧрдЗрди рдЯреВрд▓ рдмрдирд╛рдПрдВ -> рдирдпрд╛ рдкреНрд▓рдЧрдЗрди
import sublime, sublime_plugin class ExampleCommand(sublime_plugin.TextCommand): def run(self, edit): self.view.insert(edit, 0, "Hello, World!")
Oquery.py рдирд╛рдо рдХреЗ рддрд╣рдд рдЗрд╕реЗ рддреБрд░рдВрдд рд╕рд╣реЗрдЬреЗрдВ, рд▓реЗрдХрд┐рди рдЙрдкрдЦрдВрдб рд╣рдореЗрдВ рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреЗ Oquery рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рдВрдХреБрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рд╕реНрддрд░ рдЕрдзрд┐рдХ рд╕рд╣реЗрдЬреЗрдВрдЧреЗред
рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ
cx_Oracle рд╡рд░реНрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ OQuery рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВ рдФрд░ рдЗрд╕рдореЗрдВ рд╡рд╣ рд▓рд┐рдмрд╛рд╕ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдЯреЛрд░ рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдореЗрдВ, рд╣рдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рд╕рдВрдЧреНрд░рд╣ рдХреЛ cx_Oracle рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВрдЧреЗред
рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдЪреНрдЫреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрд░реЛрдз рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдП, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрдпреБрдХреНрдд рдПрдХ
рдкреНрд▓рдЧрдЗрди рд╣реИред рд╣рдо рдПрдХ рд╣реА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ: рдбрд╛рдЙрдирд▓реЛрдб, unzip рдФрд░ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред
рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ Oquery.sublime-Settigs рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдкреНрд▓рдЧрдЗрди рдХреЗ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА (рдЙрджрд╛рд╣рд░рдг) рдХреЗ рд╕рд╛рде рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ:
{ "host" : "localhost", "port" : 1521, "dbname" : "demoDB", "username" : "user1", "password" : "pass" }
рдЕрдм рд╣рдо рд╕рднреА рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЙрддрд░ рдЧрдП рд╣реИрдВред
рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░, рд╣рдо рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдЬрд╝рд░реВрд░рдд рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдХрдиреЗрдХреНрдЯрд░ рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд▓реЗрдЯреЛрдВ рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╢рд╛рдорд┐рд▓ рд╣реИ
рдкрдВрдХреНрддрд┐рдпрд╛рдВ
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"))
рдЙрджрд╛рддреНрдд рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдХрд╣рд╛рдВ рджреЗрдЦрдирд╛ рд╣реИред рдЬрдм рдмрд╣реБрдд рд╕реБрдВрджрд░ рдЙрджрд╛рддреНрддрддрд╛ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВрдиреЗ рдпреВрдирд┐рдХреЛрдбрд╛рдЯрд╛ рдореЙрдбреНрдпреВрд▓ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╢рдкрде рд▓реА, рдФрд░ рдмрд╕ рдЗрд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрджрд╛рддреНрдд рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЙрджрд╛рддреНрдд рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдпреВрдирд┐рдХреЛрдбреЗрдЯрд╛ рдореЙрдбреНрдпреВрд▓ рдХрд╣рд╛рдБ рд╕реНрдерд┐рдд рд╣реИред рдЬреНрдпрд╛рджрд╛ рдЧреБрдЧрд▓реА рдирд╣реАрдВ, рдореИрдВрдиреЗ рдПрдХ рд▓рд╛рдЗрди рдЬреЛрдбрд╝рдХрд░ рдЗрд╕рдХрд╛ рд╣рд▓ рдвреВрдВрдв рд▓рд┐рдпрд╛
sys.path.append(os.path.dirname(sys.executable))
рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рдЯреАрдо рдХреЛ рд╣реА рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ
class OqueryCommand(sublime_plugin.TextCommand): def run(self, edit):
рд╡рд╣ рд╕рдм рд╣реИред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрдкрдиреА рдЯреАрдо рдХреЛ рдЪреБрдиреМрддреА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдпреЛрдЬрди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ -> рдХреБрдВрдЬреА рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ред рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ
[ { "keys": ["ctrl+o", "ctrl+r"], "command": "oquery" } ]
рд╣рдорд╛рд░рд╛ рдкреНрд▓рдЧрдЗрди рд╕рдВрдпреЛрдЬрди (ctrl + o) + r рджреНрд╡рд╛рд░рд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдЖрдк рдПрдХ рдФрд░ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рд╕рдм рд╣реИ, рдЕрдм рд╣рдо рдХрд┐рд╕реА рднреА рдЕрдиреБрд░реЛрдз рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╣рд▓реНрдХреЗ рдХреАрд╕реНрдЯреНрд░реЛрдХ рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рдПрдХ рдирдИ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЬрд╡рд╛рдм рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣ рдЕрджреНрднреБрдд рдирд╣реАрдВ рд╣реИ?
рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрд▓рд╕реНрдп рд╣реИ, рдореИрдВ
рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рддрд╛ рд╣реВрдВ