Kyoto Cabinet の動作を見せる機会があったので、簡単なサンプルを作ってみました。
以下のサイトを参考にしています。
準備
Python は 2.7.2 で確認しています。
必要な物をインストールします。MacPorts と pip を利用してインストールしています。
sudo port install kyotocabinet +lzma +lzo
pip install -U http://fallabs.com/kyotocabinet/pythonlegacypkg/kyotocabinet-python-legacy-1.16.tar.gz
pip install -U tornado
検索用郵便番号データの作成
以下に記述されているソースは bitbucket にアップしてあります。
sakito / sample_py_kyotocabinet_tornado_zipcode / source — Bitbucket
Kyoto Cabinet Python ライブラリは素のまま使うと Python らしくないのでラッパを作成しておきます。
郵便番号データを読み込んで、KEN_ALL.kct というデータベースに格納するスクリプトを作成します。参考にしたサイトでは kch にしてますが、郵便番号検索は別に前方一致で良いので、kct の方が効率的です。
このスクリプトを利用して郵便番号データを作成します。
curl -O http://www.post.japanpost.jp/zipcode/dl/oogaki/zip/ken_all.zip
mkdir data
unzip -d data ken_all.zip
python data_load.py
Web UIの作成
UIを作成します。テンプレートとか利用するともうすこし綺麗に作成できますが、とりあえず参考サイトの形式で一つのファイルになるようにしてみました。
例外の処理とか、セキュリティとかは考慮してないです。
実行
起動します。
python server.py