Juno で Blog Engine の続き

昨日の続き ですこし機能追加しました。 session管理してブログ投稿を制限したりとか超基本的なところですが。 web.pyで作った時の機能は満たせたかなと。

http://www.hexacosa.net/hgrepos/junoblog/file/0ff9f24a8369/junoblog.py

ちょっとだけソースを追ってみたのでメモ。

以下で有効になるデバッガーはWerkzeugのもののようです。 インタラクティブシェル付きのデバッガーは初めて見た時は感動もの。

init({'use_debugger': True})

以下で有効になるセッション管理機能は、Beakerのものを使っているようです。

init({'use_sessions': True})

あまりSQLAlchemyを使ったことがなかったので勘違いしていたのですが、 DBにはデフォルトでSQLiteを使っていて、ORマッパーにSQLAlchemyを 使っているんですね。おはずかしいかぎり。。。 (まぁ「SQLAlchemyっていうすごいDBがあるんですよ。」とか言わなくてすんだ。) SQLiteはデフォルトはメモリ上にテーブルをつくるので、 ファイルに書き出したい時は、以下のような感じでファイル名を 指定してあげるとOKです。

#init({'db_location': ':memory'})    ## default setting
init({'db_location': 'filename.db'})

あとはDBのコラムのタイプは以下のような感じになってます。 はじめは全部stringにしていたのですが、unicodeとかunicodetextに 変えてみました。この辺りはSQLAlchemyとのマッピングの関係なんですかね。 もう少し勉強しないとだめだ。

## juno.py
142         column_mapping = {'string': String,       'str': String,
143                          'integer': Integer,      'int': Integer,
144                          'unicode': Unicode,     'text': Text,
145                      'unicodetext': UnicodeText, 'date': Date,
146                          'numeric': Numeric,     'time': Time,
147                            'float': Float,   'datetime': DateTime,
148                         'interval': Interval,  'binary': Binary,
149                          'boolean': Boolean,     'bool': Boolean,
150                       'pickletype': PickleType,
151         }

他にも色々設定できそうな感じですが、いま見れたのこれくらいです。 Junoいいなぁ。