はじめに
クジラ飛行机、 杉山 陽一、遠藤 俊輔 著「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を書かなくてもデータベースに指示ができる。
- セキュリティも考慮されている。
本節の気付き
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を選択する方法は以下の通りだった。
- VS Code上で,
Ctrl+Shift+pを押して,コマンドパレットを開く。 - 「Python: Select Interpreter」を選択する。
- 仮想環境のpython.exeのパスを記載する。
- このとき,デフォルトのPython.exeのパスがレコメンドされるが,作成した仮想環境のパスを選ぶようにする。

