Juno で Blog Engine の続き
Posted on Wed, 22 Jul 2009 02:37:02 +0900
昨日の続き ですこし機能追加しました。 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いいなぁ。