« 10.05 気がつけば10月 | ココ | 10.06 偶然、3年ぶりに »

2008年10月 5日

Pylonsで気がついたこと   このエントリーを含むはてなブックマーク 

ここんところは、家ではPylonsのプロジェクトファイルを弄って既存DBの表示プログラムを作ってた。まぁ、速度の問題はあるけども、何回もリロードしてるうちに速度になれてきたということもある(そんな言うほど遅くはないな、と)。で、なんとか簡単なものはできた。


ちゃんとやってみて気がついたけど、まだ完全に手取り足取りではないフレームワークなので、SQL関連のスクリプトは今のバージョン(0.9.6?)では自分でファイル作って補完する必要がある。RoRのようにどんなDBでもどんと来い、というようなものではないらしい。そもそもRDBMSの使用を前提に作られているもんでもないみたいで、(データソースはなくても、ファイルでも、なんでも対応できるように)SQLAlchemyを後からImportする形になっている。
だから、はじめてPythonでコードを組んでいる自分にとっては分からないことが多くて結構手間取った。日本語の情報源が少ないこともある(SQLAlchemyについて、Pylonsについて、とそれぞれの情報源はあっても両方重なってる領域はかなり少ないと思う)。

データはMySQLに入れているので、そこからデータを引っ張ってくることになるんやけど、まず自分でモデルを組むところからつまずく。サンプルのWikiプログラムだったりBlogプログラムのコードだったり、チュートリアルを見ると__init__.pyに全部書き込んでるとか、個人的には「えっ、それでいいの」というようなものばかりなので(ファイルは分けていたい)。でも、それでどうやってファイルを分ければええのかが分からん。他のファイルに書けばそれをImportすればいいことくらいは分かるけど。

あと、テーブルをORマッピングするときのテーブルオブジェクトを宣言するときにautoload=Trueにすると、先にセッションを作っておかないといけないところとかがちゃんと書かれてなくて悩まされた(エラーメッセージにはそう書かれてるけど、読んだだけですぐに解決するほどPythonの経験がない)。

DBへのアクセス方法も、PerlとかPHPとは全然作法が違うのでここでも理解に手こずった。慣れれば簡単なのがすごくよく分かったし、さすがのORマッピングの力に敬服した。.NETでもORマッピングができるようにはなってきてるけど、変数宣言とかクラスの宣言の柔軟性、つまりテーブルについていちいち細かな宣言がいらないという点に圧倒的な利がある。使いたいテーブルについて、数行コードを書けば宣言が終わってしまうのは動作が鈍いウィザードを起動させるのに比べて断然便利。

最後に手間取ったのは、makoテンプレート中でURLエンコードされたテキストをデコードするときに、例の"UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 346: ordinal not in range(128)"エラーが出たことか。回避する方法を試してもことごとくエラーが直らなくて、結果的には、makoファイルがスクリプトにされたときに出力対象がencode()で括られていたのでencode(unquote(url))と二重エンコードをしようとしててエラーになってることが分かったのでunquote(url).decode('utf-8')として解決。
これが分かるまでにどんなけ時間を費やしたことか。

同じDBのデータ出力プログラムを、TWikiでも作ってたんやけども、TWikiはもう既にMVCが完成されている系なのでプラグインという拡張形式でしか対応できずその点では単純に比較できないけれども、ViewについてはTWiki、Controllerについては当然柔軟性があるPylons、データの管理で言えばTWikiはファイルベースのみなのに対してPylonsは何でもOK、てことで残すならPylonsかな。ということで、TWikiには消えていただきました。

By ただ at 02:21 カテゴリー ; プログラミングとか

« 10.05 気がつけば10月 | 10月の記事 | 10.06 偶然、3年ぶりに »




トラックバック

このエントリーのトラックバックURL:
http://pinmarch.sakura.ne.jp/mt/mt-tb.cgi/1310

このリストは、次のエントリーを参照しています: Pylonsで気がついたこと:

» PHPについて from PHPを学ぶ
PHPは、Yahooや 楽天などの商用サイトでも採用されるなど、最新の多くのウェブサイトで採用されている言語です。 ウェブサイト構築を学びはじめると、最...

トラックバック時刻: 2009年1月 3日 23:53