住所録を作る(データベース編)

前回 は住所録を作りましたが、データをグローバル変数に持っていたため、サーバーが再起動したりするとデータは消失してしまいます。データをファイルに保存することで安全なアプリを実現できます。ファイルは例えばCSV形式等でも良いのですが、簡単なデータベースを使ってみましょう。

今回使うテクニック・知識

  • データベース

WEBアプリを作るときには MySQL や PostgreSQL のような本格的なデータベースを使うことが多いですが、小規模なシステムや実験レベルの実装に使うには荷が重いです。今回は手軽に使えるデータベース SQLite の Python モジュールである sqlite3 を使用することにします。SQLite はデータの実体がひとつのファイルなので取り扱いが簡単で、そのデータベースファイルをバックアップするだけでデータを退避することができます。設定項目も最低限で済み、プログラミングが楽なので初めて使うデータベースとしては最適です。

WindowsのWSLやMacのターミナルにはデフォルトで sqlite3 がインストールされているはずですが、必要ならインストールしてください。

  • SQL

データベース内のデータを処理するにはSQLというデータベース言語を使用します。SQL言語は SQLite だけでなくデータベースを扱うときには必ず必要になるので基本的なことは勉強しておいてください。今回のサンプルでは単純な例しか出てきませんので前提知識がなくてもソースコードから理解できると思います。

  • SQLAlquemy

Python のモジュール SQLAlquemy を使うとデータベースをクラスのように扱え、見通しの良いプログラムが書けます。しかし、今回のような単純なアプリでは SQLAlquemy の学習コストが高く付いてしまうので使いません。本格的なアプリを作るときには検討する価値があります。公式文書はこちらです。

ソースコード

  • app.py
  • index.html
アプリケーションの実行のさせ方は前回と同じです。

表示をカッコよく

Flaskと直接には関係ないのですが、WEBページの表示を整えるためのツールとして Bootstrap4 というものがあります。一部の書籍やネット記事では旧バージョンの Bootstrap3 を前提に書いているものがありますので混同しないように注意してください。Bootstrap を使うと、HTML に記述を追加することでWEBページの見栄えを大幅に改善できます。上記のサンプルで使用した index.html を下のように変更してみてください。

  • index.html(Bootstrap版)
アプリを実行するとこのような表示に変わるはずです。

Bootstrap についてはここでは説明しませんので別途勉強してください。解説記事はたくさんありますが、筆者がお世話になっているサイトを紹介しておきます。

とほほのBootstrap 4入門

機能拡張

名前と住所を入力してデータベースに格納するだけのアプリを作りましたが、実用するには足りない機能がたくさんあります。

    • 名前の読みがなや郵便番号など、住所録として必要な機能。
    • データを初期化・編集・削除する機能。
    • SQLインジェクションと呼ばれるセキュリティ攻撃への対策。etc.

Flaskの練習としてアプリを完成させてください。

コメント