データベースの表示

Image from Gyazo

SQLiteデータベースの確認

前回作成した sugiten フォルダに, SQLiteで作成したデータベースファイル sugiten.db をコピーします (cgi-binではないことに注意). SQLitesugiten.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

Image from Gyazo

テーブル表示を整形

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 テーブルのレコードが表示されます.

Image from Gyazo

上記と同じ方法で,ItemsテーブルとHistoriesテーブルのレコードも表示させてください.

Image from Gyazo

Image from Gyazo

Image from Gyazo

参考書籍

愛知県名古屋市にある椙山女学園大学 文化情報学部 向研究室の公式サイトです. 専門は情報科学であり,人工知能やデータベースなどの技術要素を指導しています. この公式サイトでは,授業で使用している教材を公開すると共に, ベールに包まれた女子大教員のミステリアスな日常を4コマ漫画でお伝えしていきます. サイトに関するご意見やご質問はFacebookまたはTwitterでお問い合わせください.