お勉強
Apache,FireBird,Pythonでお勉強。
Apacheは2.054。
Pythonは2.3(日本語版インストーラ)。
Firebirdは1.5.2。
kinterbasdbは3.1.1。
mod_pythonは3.1.3。
Pythonは日本語パッケージを使ったほうがよさそうな気がしたのであえて2.4は見送った。あ、今回はお勉強なんでWindows上でやってます。
また、mod_pythonもWindowsバイナリはpython2.4がまだないようだったから2.3を選択したのが正解となった。
インストール自体は苦労はしない(インストーラ形式なので)のだが、すべてゼロから入れるからそれなりに時間がかかる。こんなときにはZopeの利便性を本当に感じる。
関連リンク:
http://sourceforge.net/projects/firebird
http://www.modpython.org/
http://kinterbasdb.sourceforge.net/
http://www.egenix.com/files/python/eGenix-mx-Extensions.html(kinterbasdbが必要とする)
FireBirdの接続コマンドとかすぐ忘れるので助かります。
http://nekomimi.s41.xrea.com/x/firebird/pukiwiki/?FrontPage
設定などを簡単に以下に記していきます。
まずhttpd.confにmod_pythonを有効にするため、
LoadModule python_module modules/mod_python.so
を記入。これがなければ何も始まらない。
また、.htaccessを使えるようにするため
AllowOverride All
NoneをAllに変更。今回はhtdocs以下にテストフォルダを作ったので
<Directory "C:/Program Files/Apache Group/Apache2/htdocs">
.
.
.
</Directory>
で囲まれている行のAllowOverrideのみ変更。Limit句はどういう時使うのだろう?あとで調べよう。
次に、.htaccessをテストするフォルダに作って以下を記述
AddHandler mod_python .py
PythonHandler dbexample
PythonDebug On
Windowsの場合GUIではいきなり"."(ドット)で始まるファイル名は作れないからコマンドプロンプトからcopyコマンドなりで作成。
"dbexample"はこれからテストするファイル名を指定しておく。
で、テストディレクトリに"dbexample.py"ファイルを作成。
def handler(req) :
"""サンプルの実行
"""
from mod_python import apache
import kinterbasdb
con=kinterbasdb.connect(
dsn="c:\\employee.fdb",
user="sysdba",
password="masterkey")
cur=con.cursor()
cur.execute("select * from employee")
req.write("<html><body><pre>")
req.write("従業員テーブル\n")
req.write("__________________________________\n")
while 1:
row = cur.fetchonemap()
if row is None:
break
req.write(row['first_name'])
req.write(" ")
req.write(row['last_name'])
req.write("\n")
req.write("</pre></body></html>")
return apache.OK
con.close()
http://localhost/py/dbexample.py
をブラウザからアクセスしてエラーなく、FirebirdのサンプルDB従業員名簿が表示されれば第一歩をクリア、ということでしょうか。
こう書くと何てことぁないけど結構時間がかかった。ま、一歩一歩。
print文は使えないのーねーーーー。
さて次はcgi形式で使えるようにしないと。
次回のお勉強のためにさらに参考リンク:
http://www.python.jp/doc/contrib/modpython/
http://www.netspice.co.jp/Technic/mod_python/modpython.html
http://kinterbasdb.sourceforge.net/dist_docs/usage.html
え?Zopeがあるのになにをいまさらこんなことやってるの?って、そうですねー、なんかZopeに頼ったままって悔しいじゃないっすか。てなところにしときます。