jiku log

データサイエンスの核心を掴む : 学びと発見の記録

「PythonでつくるWebアプリのつくり方」を読む ~Chap.3 Webフレームワークとデータベース ①リレーショナルデータベース ~

はじめに

クジラ飛行机、 杉山 陽一、遠藤 俊輔 著「PythonでつくるWebアプリのつくり方」を読み,Pythonを使ったWebアプリ開発の基礎を学ぶことにした。

本記事は,「chapter3 Webフレームワークとデータベース」における,リレーショナルデータベースに関する読書メモである。

本記事を読むことで得られること

本記事を読むことで得られることは,主に以下の内容である。

chapter3 Webフレームワークとデータベース

本章では,一般的なWebシステムが必要とする「データベース接続」「ログイン機能」などを,Flaskが用意している機能を使って実装する方法を説明している。

01 掲示板アプリをリレーショナルデータベース対応しよう

要点

リレーショナルデータベースが必要になる理由

リレーショナルデータベースが必要になる理由は,データを永続化させるためである。
第2章の掲示板アプリでは,起動するたびにデータがリセットされていた。ただ,掲示板などのアプリにおいて,データを集め,それを活用するには,データを永続化する必要がある。データの永続化とは,データを安全に守り,使いたいときに使えるようにする,という意味である。

本書では,リレーショナルデータベースとして,サーバー型データベース自己完結型データベースが紹介されていた。それぞれの特徴は下表の通りである。

サーバー型データベース 自己完結型データベース
具体例 Oracle Database,Microsoft SQL Server SQLite
サーバーの要否 必要 不要
複数同時アクセス 複数の同時アクセスに対応 複数の同時アクセス対応に弱い
主な利用シーン システムの運用環境 モバイルアプリやシステム開発時のテスト

本書では,簡単に開発体験をするために,SQLiteを用いる。

リレーショナルデータベースに接続する手順

PythonにはSQLAlchemyというライブラリがあり,このライブラリを通してSQLiteに接続する。
www.sqlalchemy.org

SQLAlchemyには以下のような特徴がある。

  • SQLAlchemyはORM(Object Relational Mapper)であり,SQLを書かなくてもデータベースに指示ができる。
  • セキュリティも考慮されている。
CRUD

データベースを扱うアプリには,

  • Create : 作成
  • Read : 閲覧
  • Update : 更新
  • Delete : 削除

の4つの機能が基本機能だとされており,これら4つをまとめてCRUDと表現している。

本節の気付き

VS Codeのカレントディレクトリ設定でつまずいた

本書は,Pythonを一通り分かっている人を対象に書かれている。またPythonを一通りわかっているということで,Visual Studio Code (VS Code)の説明もわりとあっさりしている。

今回はSQLAlchemyを用いているので,アプリ実行の際に,アプリを実行しているカレントディレクトリ直下に\instance\db.sqlite が生成される。これが生成される場所だが,本書P129では,

「app.py」があるフォルダーを見てい見ると、「instance」フィルダーができており、その中に「db.sqlite」ファイルができている

と書かれているが,実際はVS Code実行時のカレントディレクトリであった。具体的には,VS Code上で,app.pyを実行したときに表れるターミナル画面において,最初に出てくるディレクトリである。

最初,カレントディレクトリの場所を適当に設定していたので,\instance\db.sqlite の作成場所が分からなくなった。

仮想環境の設定を忘れていた

本書では,venvを用いてPythonの仮想環境を作り,そこに必要なライブラリ(SQLAlchemyなど)をpip installしている。ただし上記のように,カレントディレクトリを設定するのに合わせて,作成した仮想環境を設定する必要がある。設定しないと,インストールした各種ライブラリが使えなくなるからだ。

VS Codeにて,Pythonの仮想環境中にあるpython.exeを選択する方法は以下の通りだった。

  1. VS Code上で,Ctrl + Shift + pを押して,コマンドパレットを開く。
  2. Python: Select Interpreter」を選択する。
  3. 仮想環境のpython.exeのパスを記載する。
    • このとき,デフォルトのPython.exeのパスがレコメンドされるが,作成した仮想環境のパスを選ぶようにする。

まとめと感想

今回は,「chapter3 Webフレームワークとデータベース」における,リレーショナルデータベースについてまとめた。

SQLiteを使えば,Microsoft SQL Serverのようなデータベースをインストールしなくてもデータベースが使えるようになるので,テスト環境での利用では便利であると感じた。またSQLAlchemyのように,SQL文を書かなくてもデータベースを操作できるのも便利であった。

本筋からはずれるが,VS CodePythonを扱ううえでの各種つまずきがあったので,次回以降は気を付けたい。


本記事を最後まで読んでくださり,どうもありがとうございました。