Pyramidのチュートリアルをやってみる① 〜インストールからアプリケーションの起動まで
前も言ったけど,Pyramidを使ってみようと思う.
ここのチュートリアルを進めていく.
日本語の情報少ないし,ツラいねー.
今回は,インストールとかの環境構築から,(ほとんど)何もしなくてもできる,それっぽいアプリケーションの起動まで.
Pyramidのインストール
$ pip install pyramid
で,インストールする.
現在は,env-pyramid環境にいるので,この環境でしか使えない.そういうやつ.
pyramidをインストールすると,色々自動でインストールされる.
$ pip freeze Chameleon==2.11 Mako==0.8.1 MarkupSafe==0.18 PasteDeploy==1.5.0 WebOb==1.2.3 pyramid==1.4.3 repoze.lru==0.6 translationstring==1.1 venusian==1.0a8 wsgiref==0.1.2 zope.deprecation==4.0.2 zope.interface==4.0.5
プロジェクトの作成
tutorialという名前のプロジェクトを作成する.
$ pcreate -s alchemy tutorial
pcreateはプロジェクトを作成するためのコマンドで,~/.virtualenvs/env-pyramid/bin/の中.
-sオプションで,scaffoldを指定する.
ここでは,scaffoldという機能を使っていて,土台となる枠組みを自動で生成してくれるっていう感じ.
$ pcreate -l Available scaffolds: alchemy: Pyramid SQLAlchemy project using url dispatch starter: Pyramid starter project zodb: Pyramid ZODB project using traversal
使用可能なscaffoldの種類はこんな感じ.
ちゃんと理解はしてなけいけど,
- alchemy:永続化にSQLAlchemyを使って,URLからコードへのマッピングにはURL dispatchを使う
- starter:永続化はなしで,URLからコードへのマッピングにはURL dispatchを使う
- zodb:永続化にZODBを使って,URLからコードへのマッピングにはtraversalを使う(Python3では不可)
って感じだろうか.
開発の下準備
簡単にプロジェクトの開発をするために、 setup.py develop コマンドを 使ってプロジェクトを開発用 egg として作業用スペースに “登録” する必要が あります。
インストール — The Pyramid Web Application Development Framework v1.4.1 (翻訳)
ということなので,
$ cd tutorial
$ python setup.py develop
として,実行.
そして,データベースの初期化を行う.
$ initialize_tutorial_db development.ini 2013-07-19 14:10:02,112 INFO [sqlalchemy.engine.base.Engine][MainThread] PRAGMA table_info("models") 2013-07-19 14:10:02,112 INFO [sqlalchemy.engine.base.Engine][MainThread] () 2013-07-19 14:10:02,113 INFO [sqlalchemy.engine.base.Engine][MainThread] CREATE TABLE models ( id INTEGER NOT NULL, name TEXT, value INTEGER, PRIMARY KEY (id), UNIQUE (name) ) 2013-07-19 14:10:02,113 INFO [sqlalchemy.engine.base.Engine][MainThread] () 2013-07-19 14:10:02,115 INFO [sqlalchemy.engine.base.Engine][MainThread] COMMIT 2013-07-19 14:10:02,117 INFO [sqlalchemy.engine.base.Engine][MainThread] BEGIN (implicit) 2013-07-19 14:10:02,118 INFO [sqlalchemy.engine.base.Engine][MainThread] INSERT INTO models (name, value) VALUES (?, ?) 2013-07-19 14:10:02,118 INFO [sqlalchemy.engine.base.Engine][MainThread] ('one', 1) 2013-07-19 14:10:02,119 INFO [sqlalchemy.engine.base.Engine][MainThread] COMMIT
なんか,テーブルができてる感じがする.
ちなみに,プロジェクトの名前によって,コマンドは変わってくる.
正確には,
$ initialize_(プロジェクト名)_db development.ini
かな.
このコマンドの実行で,カレントディレクトリにtutorial.sqliteというデータベースファイルが作成される.
ちょっと見てみよう.
$ sqlite3 tutorial.sqlite SQLite version 3.7.7 2011-06-25 16:35:41 Enter ".help" for instructions Enter SQL statements terminated with a ";"
sqlite> .tables models sqlite> .schema models CREATE TABLE models ( id INTEGER NOT NULL, name TEXT, value INTEGER, PRIMARY KEY (id), UNIQUE (name) ); sqlite> select * from models; 1|one|1 sqlite> .exit
なんかできてる.これでいいでしょう.
アプリケーションの起動
じゃあ,一旦アプリケーションを起動してみる.
$ pserve development.ini --reload Starting subprocess with file monitor Starting server in PID 3944. serving on http://0.0.0.0:6543
デフォルトでは,ポート番号6543で起動される.
で,http://localhost:6543にアクセスすると,こんなページが!
環境を作って,pyramidをインストールして,setupして,DBを初期化して,起動するだけで,これだけのものが作れるのは素晴らしい.
ちなみに,右側にあるのは,デバッグツールバーで,色んな情報が見れる.
ヘッダー情報とか,ログとか,実行されたSQLとかとか.
あと,実行したときの--reloadオプションは,ファイルを変更したときに,自動で再起動してくれる優れもの.
ただ,試行錯誤で色々やってる段階だと,エラーが出まくってウザいので,要所要所で使うのがいいかと.
ちなみに,アプリケーションの中断はCtr-c.
あと,なんか,アプリケーションを起動する度に「アプリケーション"python"へのネットワーク受信接続を許可しますか?」って出てきて,なんとかならないのかね.
こんなやつね.
ファイアウォールの設定しても変わらないし.
とりあえず,今回はこんな感じで.
次 > Pyramidのチュートリアルをやってみる② 〜 wikiアプリケーションの設計(モデルの定義) - [[ともっくす alloc] init]