PythonはWeb開発で最も人気のある言語になりました。
今まで難しかったWeb開発をPythonは一挙に簡単にしてみせました。
Web開発はPythonの最も得意とする分野のひとつです。
with ibm_db2.connected() as conn:
# ブラウザからの入力値を受け取る。
params = bottle2.request.query.decode()
# SQL を組み立てる。
sql = '''
SELECT T01.SHCODE
, VARCHAR(T01.SHNAME, 72) SHNAME
, T01.SHTANK
, VARCHAR(T01.SHSCOD, 12) SHSCOD
, VARCHAR(T02.HNSNAM, 42) HNSNAM
FROM QTRFIL.SHOHIN T01
LEFT JOIN QTRFIL.HINSHU T02
ON T01.SHSCOD = T02.HNSCOD
WHERE SHCODE >= ?
ORDER BY SHCODE
'''
stmt = ibm_db2.prepare(conn, sql);
ibm_db2.bind_param(stmt, 1, params['SHCODE']) # SHCODE を SQL にセットする。
# SQL を実行する。
ibm_db2.execute(stmt)
# 結果のレコードを取得する。
values = []
row = ibm_db2.fetch_assoc(stmt)
while row != False:
values.append(row)
row = ibm_db2.fetch_assoc(stmt)
# 明細画面の HTM を表示する。
return bottle2.template('LISTDEF.HTM', {
'values': values,
})
このPythonのソースにはIBM iの知識は全く必要なく
Pythonプログラマーであれば容易に理解することができます。
SQL文を生成して
SQL文を実行して
HTMLテンプレートに結果のレコードを渡す
というシンプルな構造です。
SELECT T01.SHCODE
, VARCHAR(T01.SHNAME, 72) SHNAME
, T01.SHTANK
, VARCHAR(T01.SHSCOD, 12) SHSCOD
, VARCHAR(T02.HNSNAM, 42) HNSNAM
FROM QTRFIL.SHOHIN T01
LEFT JOIN QTRFIL.HINSHU T02
ON T01.SHSCOD = T02.HNSCOD
WHERE SHCODE >= ?
ORDER BY SHCODE
で記述したSQLのSELECT文を
# SQL を実行する。
ibm_db2.execute(stmt)
で実行します。
ibm_db2 は Python.400が提供するIBM i DB2/400へのデータ・ベース接続です。
日本語の文字化けもなく安全に接続することができます。
最後には、
# 明細画面の HTM を表示する。
return bottle2.template('LISTDEF.HTM', {
'values': values,
})
で HTMLテンプレートに結果を渡して表示しているだけの
シンプルな構造です。
従来のWebアプリケーションは例えばApacheやTomcatのようなHTTPサーバーを
事前に起動しておいてその上で動作することが必要でしたが、
PythonによるWebアプリケーションではPytyhon自らが
Bottleという名前のHTTPサーバーを持っていますので
ApcheやTomcatのようなHTTPサーバーを事前に起動しておく
必要もありませんしHTTPサーバも必要としません。
Pythonをただ起動するだけで自然にHTMLが表示されるのです。
Pythonが難しかったWebアプリの世界を一挙に簡単なものに変えてしまいました。
実際にあった話ですがある初老のRPG IIIだけの経験のプログラマーが
会社の命令でわずか半年足らずで一人だけでWeb開発を完成させたという
実例が最近ありました。
この話は(株)オフィスクアトロがPythonフレーム・ワークの開発を
取り組むキッカケとなりました。
このようにPythonによるWeb開発は初心者を問わず
非常に簡単に行うことができます。
PHPやJSP&Servlet(=Java)ではHTMLの内部に
PHPやJavaを混在させて開発するというものです。
一見、やさしそうに見えますが
これではHTMLとJavaScriptにかなり精通している
人でないと開発することができません。
複雑なHTMLインターフェースでは
HTMLインターフェースをWebデザイナーでも
保守することはできなくなってしまいます。
また複雑なPHPやJSPを開発する場合は
目的の出力となるHTMLをまず開発して
そのHTMLが出力されるようなPHPやJSP&Sevletを
開発するという手法を取ります。
つまり2度開発するという途方もなく無駄な手法を
取ることになります。
これではPHPやJSPが伸び悩むのも無理はありません。
PythonソースとHTMLテンプレートは完全に分離されており
HTMLインターフェースは独立しています。
複雑なデザイン変更もHTMLをWebデザイナーに渡して
編集してもらうことができます。
あなたが細かなHTMLのデザインまでを勉強する必要は
ありません。

それでいて必要あればHTMLにも条件分岐を定義することができます。
この実用性がPythonがWebアプリケーションとして
多く採用されている理由となっています。
このようにPythonによるWeb開発は急速に普及しています。
Python.400でも PythonによるWeb開発の事例を
増やしていく計画です。
