BottleのなかみはElixirできまり!!

Bottle はURLマッピング、独自のテンプレートエンジン等を特徴とした、 シンプルなPythonのWebフレームワークです。 Elixir は SQLAlchemy をラップしたORMapperなモジュールです。 タイトルはまぁそのー、、、うまいこと言ってみました。
Bottleのチュートリアル を練習がてら写経してみます。 チュートリアルではSQLを直にたたいている感じですが、 ちょっとめんどくさそうなのでElixirを使ってみることにしました。
インストール
bottoleとelixirをpip経由でインストールします。
$ pip install bottle
$ pip install elixir
準備は完了です。 私はテンプレートエンジンに Jinja2 を使用しました。 その他外部モジュールを使用する場合は適宜インストールしてください。
BottleでJinja2のテンプレートを使う
jinja2_template をインポートすればJinja2をテンプレートエンジンに使えます。 チュートリアルのコードと同じにするなら、以下のようなコードになります。
from bottle import jinja2_template as template
Elixirを使う
私はモデルを model.py に書いて、コントローラ側のコード todo.py で インポートして使いました。Djangoチックですね。 todoリストのモデルは以下のようになります。
from elixir import Entity, Field, Unicode, Boolean
class Todo(Entity):
task = Field(Unicode(100))
status = Field(Boolean)
コントローラ側では、sqliteのDBパスを metadata.bind で指定して、 setup_all() でDBを作成します。 setup_all() の第1引数を True にすると DBファイルがなければ作成してくれます。
from bottle import run
from elixir import setup_all, metadata
if __name__ == '__main__':
metadata.bind = "sqlite:///./todo.sqlite"
setup_all(True)
run()
DBの操作は、 インスタンス生成して、 session.commit() すれば INSERT 。 Model.query.filter_by() で SELECT 。 DELETE は SELECT 等でDBからオブジェクトを引っ張ってきて、 model.delete() 後に session.commit() 。 まぁ、コードを見てもらった方がわかりやすいかと思います。 チュートリアル を参考にしてみてください。
できたのが、これ。
あとは、チュートリアルを参考にしながらいじり倒すのが良いかと。 そのうち止めると思いますが、チュートリアルを参考に作ったデモ (http://todo.hexacosa.net/todo)を試しにさわって見てください。
コードも公開してますので、参考になれば。 (http://www.hexacosa.net/hgrepos/bottle-todo-tutorial_with-elixir/)