仕事でTreasureData CDPを使うことになった。CLIが欲しいのでしらべたら ToolBelt があった。ToolBeltだと色々できるが、ただ自分がtrino clientに慣れたので、query専用のCLIが欲しかった。調べたところ以外とあまりなかったので、作ってみた。
基本的にのイメージはコマンドラインからコマンドを受け、TreasureDataのRest APIを叩いて結果を表示する。それだけ。
最初に、PythonのCmdモジュールを使ってみた。基本のところができたがやはり物足りない。自由にキーボードでカーソルを動かしたり、マルチラインでクエリを編集したり、ヒストリーをもどしたり欲しくなった。
調べたところ、 Prompt Toolkit が良さそうかったのでベースを CmdモジュールからPrompt Toolkitへシフトした。
他にSQL分の解析も必要なので、当初はシンプルな正規表現で頑張ろうとしたがやはり限界があるので、sqlparse へシフトした。
結果として、個人的に便利なものができた https://github.com/bachng2017/tdq
インストール方法
pip3 install --user tdq