データベースの表示
SQLiteデータベースの確認
前回作成した sugiten フォルダに, SQLiteで作成したデータベースファイル sugiten.db をコピーします (cgi-binではないことに注意). SQLite で sugiten.db を開き,保存されているテーブルを確認しましょう. ユーザの情報を保持するUsersには4件, 商品の情報を保持するItemsには6件, 購買履歴を保持するHistoriesには4件のレコードが登録されています.
sqlite> .open sugiten.db
sqlite> .database
main: /sugiten/sugiten.db
sqlite> .table
Histories Items Users
sqlite> .header on
sqlite> select * from Users;
id|password|name|tel|mail
u01|X2ng|中谷俊介|090-1111-1111|shunsuke@mail.jp
u02|fL4m|永松克也|090-2222-2222|katsuya@mail.jp
u03|hY8W|神野愛美|090-3333-3333|aimi@mail.jp
u04|jY4p|大久真鈴|090-4444-4444|masuzu@mail.jp
sqlite> select * from Items;
id|name|price|stock
i01|マウス|2000|10
i02|パソコン|150000|5
i03|キーボード|3000|10
i04|モニタ|40000|3
i05|ウェブカメラ|6000|5
i06|ノートパソコン|170000|3
sqlite> select * from Histories;
id|time|user_id|item_id
1|2020-01-01 12:00:00|u01|i01
2|2020-01-02 14:00:00|u02|i02
3|2020-01-02 18:00:00|u01|i04
4|2020-01-03 12:00:00|u04|i02
データベースの表示
それではCGIを利用してデータベース sugiten.db のテーブルを表示してみます.
まずは,PythonでSQLiteのデータベースを操作するためのライブラリを導入します.
パワーシェルを立ち上げ,下記のようにpip
コマンドで sqlite3 をインストールします.
% pip install sqlite3
前回作成した users.py をエディタで開き,
#!
で始まる1行目のコード(シェバン: shebang)の後に,
import slite3
を追加します.
#!/usr/bin/env python
import sqlite3
次に body
タグのprint関数の後に,下記のコードを追加します.
ここでは, sugiten.db に接続し,
Usersテーブルの全てのレコードを取得して表示しています.
print("<body>")
print("<h1>ユーザ情報</h1>");
# データベースに接続
con = sqlite3.connect('sugiten.db')
# カーソルを取得
cur = con.cursor()
# ユーザ情報を取得
records = cur.execute("SELECT * FROM Users;")
# ユーザ情報を表示
for record in records:
print("<p>" + str(record) + "</p>")
# データベースを切断
con.close()
print("</body>")
server.py
を実行してウェブサーバを起動して,
users.py
を開くと,下記のように Users テーブルのレコードが表示されます.
% python server.py
テーブル表示を整形
table
タグを利用して,テーブルの表示を整えます.
for
文を下記のように修正します.
テーブルの属性名はth
タグ,レコードはtd
タグで表示します.
# ユーザ情報を表示
table = "<table border=`1``>"
table += "<tr>"
table += "<th>id</th>"
table += "<th>password</th>"
table += "<th>name</th>"
table += "<th>tel</th>"
table += "<th>mail</th>"
table += "</tr>"
for record in records:
table += "<tr>"
for column in record:
table += "<td>"
table += str(column)
table += "</td>"
table += "</tr>"
table += "</table>"
print(table)
users.py
を開くと,下記のように Users テーブルのレコードが表示されます.
上記と同じ方法で,ItemsテーブルとHistoriesテーブルのレコードも表示させてください.