前回の記事でpythonとsqlite3を使った簡易データベースシステムを作った。
pythonとsqlite3でインタラクティブな簡易検索システムの構築
作ったはいいけど、pythonファイルが小分けになっており、GUI操作でファイルを実行しなければならない。どういう状況を想定しているのかは自分でも謎だけど、やはりインタラクティブというかインターフェースみたいなものがほしいと思った。しかしあまりインタラクティブよりにしすぎるとかえって使いにくくなってしまう可能性もある。
インターフェースの案
候補は2つ。pythonかpowershell。pythonから別のpythonファイルを実行させることはできるけど、やり方を忘れていて学習コストが若干高めに感じた。powershellもクセのある感じだけどお手軽なのでpowershellを使うことに。
ひとまずpowershellのファイルを仕込んでおく。ファイル名はpowershell_interface.ps1だ。
PowerShellのswitch文で簡易インタフェースを作る
以下はPowerShellのコード
# 表示 write-host "`n1: create_table.py`n2: drop_table.py`n3: insert_user.py`n4: delete_user.py`n5: .tables.py`n6: .users.py`n7: where_name.py`n" # 入力受付 $num = read-host "please select program_number" # 条件分岐 switch ($num){ 1 {ii "create_table.py"; break} 2 {ii "drop_table.py"; break} 3 {ii "insert_user.py"; break} 4 {ii "delete_user.py"; break} 5 {ii ".tables.py"; break} 6 {ii ".users.py"; break} 7 {ii "where_name.py"; break} default {"`nerror your_input_number nosuchfile`n"} }
番号に対応したプログラムを起動するようにしている。iiはinvoke-itemのエイリアスで、関連付けられたアプリでファイルを実行する。
powershellを使ったことによって生じた問題点
powershellのinvoke-itemでpythonファイルを実行すると pythonコンソール がたちあがってしまう。そのためpowershellのコンソールとpythonのコンソールがたちあがってしまい、うーん・・・という感じになってしまった。
ながら作業でデータベース操作することを想定してみると、これだとちょっと使いにくいかもしれない。しかしこれ以上簡潔にする方法を考えてみたものの何も思いつかない。
PowerShellで作った恩恵
ユーザーの連続追加や連続削除機能はないと書きましたがインタラクティブに操作できるようになったおかげで実質的には連続追加できるような感じになりました。コンソールは2つたちあがるものの、pythonコンソールをとじれば自動的にpowershellのコンソールがアクティブになります。
コメント