データベースとウェブサイトの連携
履修者に望むこと
本講義は,データベースシステムで解説した データベースに関連する知識や技術を習得済みであることを前提としています. 特にデータベース管理システムの一つであるSQLiteと, 問い合わせ言語である SQL を中心にコンテンツは構成されていますので, データベースシステムの未履修者は,独学でこれらの技術を習得することを強く望みます.
この講義の目的は「データベースと連携したウェブサイトを構築する」ことです. この目的を達成するには,上述の知識や技術に加えて,下記の技術要素が必要となります. 複数の技術要素を組み合わせた難易度が高い講義となりますので, 毎回の予習・復習を怠らず,授業に臨んでください.
- Python(ウェブサーバの構築)
- HTML & CSS(ウェブページの記述)
- オープンデータ(Japan Searchや統計LODなど)
- SPARQL(LODへの問い合わせ)
また,この授業では,作成した環境(サーバやファイルなど)を継続して利用します. このため,欠席すると,次回からの授業についていけなくなることが予想されます. 止むを得ない事情で欠席することがあると思いますが,遅れた分は自力で取り返す努力をしてください.
ウェブサイトとの連携
本講義ではデータベース管理システムのSQLiteで, テーブルの作成・更新などの操作を行います. PythonのSQLite3モジュールを利用することで, Pythonからこれらの操作を実行することが可能です.
例えば,下記のPythonのソースコードは, データベース sample.db に接続し, SQLを用いてテーブル students のレコードを取得しています. このようにPythonからデータベースを操作することで, ウェブページに表示する情報を制御します.
import sqlite3
con = sqlite3.connect('sample.db') # データベースに接続
cur = con.cursor() # カーソルを取得
cur.execute("SELECT * FROM students") # SQL文を実行
con.close() # データベースを切断
また,Pythonにはウェブサーバを実装するための http.serverモジュールがあります. このモジュールを利用することで,ApacheやNginx などの専用のサーバソフトウェアを導入せずに,簡易なローカルのウェブサーバを構築することができます.
例えば,ターミナル(コマンドプロンプトなど)で, 下記のコマンドを実行することで,8000番ポートにウェブサーバが起動します.
% python -m http.server 8000
ブラウザを開きhttp://localhost:8000を入力してみましょう. 下記のようにコマンドを実行したフォルダのファイル一覧が表示されます.
これらの機能を活用することで,データベースを連携したウェブサイトを構築します. 完成したウェブサイトのソースコードは下記URLで公開しています. 作業を進める上で参考にしてください.
最終課題の概要
本講義の第13回〜第15回は最終課題として 「データベースと連携したオリジナルのウェブサイト」を制作してもらいます. 第15回は発表も兼ねており,制作したオリジナルのウェブサイトの特徴を解説してもらいます. 最終課題では,Japan Searchや統計LODなどの オープンデータを活用したウェブサイトの構築を目指しましょう.