1. HOME
  2. ブログ
  3. IT技術
  4. 【第2回】FastAPIチュートリアル: ToDoアプリを作ってみよう【モデル構築編】

【第2回】FastAPIチュートリアル: ToDoアプリを作ってみよう【モデル構築編】

FastAPIチュートリアル: toDoアプリを作ってみよう~第2回~

前回の記事「【第1回】FastAPIチュートリアル: ToDoアプリを作ってみよう【環境構築編】」の続きです。

今回も、ToDoアプリを作る過程で、FastAPIの使い方を学んでいきましょう!

第1回はこちら

情報の管理

今回のToDoアプリケーションでは、ユーザ情報と各ユーザのタスクを管理する必要があります。

これらはモデルを定義し、データベースに格納しておくことで、コントローラ側とデータのやりとりをできるようにしておく必要があります。

本チュートリアルでは、Pythonのデータベース管理ライブラリであるSQLAlchemyを用います。

インストール

初めて使う方はインストールしましょう。

データベースを作成する

モデルを構築する前に、まずはデータベースを作成しましょう!

新しくデータベースを定義するファイル、db.py を作成してください。

今回は、SQLite3 をデータベースとして使うことにします。

db.py

db.pyには、以下の内容を記述してください。

ここでは、SQLite3 のベースとセッションを定義しています。

今後、データベースをいじる際には、このファイルをインポートしセッションを行います。

この辺りは後々説明しますので、今の段階では「SQLite3っていうデータベースを使うんだな」程度の理解で大丈夫です。

モデル構築

それでは、早速モデルを構築していきましょう。

新しく、models.py というファイルを作成します。

このファイルに、モデルの構成(データベース構成)を SQLAlchemy を用いて記述していきます。

コードを書く前に、作りたいモデルを整理しましょう

モデル例

例えば、以下のようなモデルが考えられます。

Userid (各ユーザ固有のID: 主キー)
username (ログインに必要なユーザネーム)
password (ログインに必要なパスワード)
mail (メールアドレス)
Taskid (各タスク固有のID: 主キー)
user_id (紐づくユーザID: 外部キー)
content (タスク内容)
deadline (タスクの締め切り)
date (タスク作成日)
done (タスクが終了したか)

少なくとも上記のような情報を持ったモデルがあれば、「ToDo」アプリは作成出来そうです。

早速コードに落としてみましょう!

実装してみる (models.py)

モデルの定義を models.py にしていきます。

内容は、先ほどの表を参考にして、SQLAlchemy の文法に従って書くと、以下のようになります。

必要はないのですが、デバッグ用で def __str__(self) を定義しておくと便利です。

( print(Model) で表示したいものを書く)

これでモデルの定義が終わりました。

コードは、ひとつひとつ丁寧に追えば「なるほど、SQLAlchemyではこう書くのか」と理解できると思います。

データベースの作成とサンプルデータの挿入

それでは、データベースを実際に作成しましょう。

また、ついでに試しのデータを格納してみます。

新しく create_table.py を作り、以下のコードを書いてください。

では、このファイルを実行してみましょう。

実行すると、db.sqlite3というファイルが作成されます。

確認

データが格納できているかも確認してみましょう!

このように表示されればOKです!

パスワードもしっかり暗号化されていますね。

これで、「データベースの作成」および「モデルの作成」、そして「サンプルデータの追加」ができました。

では、コントローラやビューと連携させてみましょう

モデルの情報を管理者ページに反映させる

前回作った管理者ページに、モデル情報を反映させてみます。

まだ、「ログイン機能」などはないので、先ほど作ったadminユーザのみ対応させてみましょう!

controllers.pyを修正

まず、以下の内容を追加でインポートします。

次に、 admin() を修正していきます。

現段階では動作確認なので、adminユーザのみを取得し、それに紐づいたタスクをデータベースから取得します。

また、データを取得した後は、セッションをクローズするのを忘れないようにしましょう。

ビュー templates/admin.htmlを修正

次に、ビューを修正します。

取得したタスクは、テーブルとして表示するようにしてみました。

確認

では、http://127.0.0.1:8000/admin にアクセスしてみましょう。

改良したadminページ

うまくモデルからデータを取得できていそうです!

第3回へつづく!

今回は、モデルの構築をメインに行いました。

ただ、まだまだ「ToDoアプリ」とは言えませんね。

「ログイン機能」はない上に、ビューからToDoリストに「タスク追加」もできません。

次回は、そのあたりを中心に解説・実装していきたいと思います!

第3回の記事はこちら

ResponderとFastAPIを実際に使って比較してみた

こちらの記事もオススメ!

書いた人はこんな人

広告メディア事業部
広告メディア事業部
「好きを仕事にするエンジニア集団」の(株)ライトコードです!

ライトコードは、福岡、東京、大阪の3拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。

システム開発依頼・お見積もり大歓迎!

また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」「WEBディレクター」を積極採用中です!
インターンや新卒採用も行っております。

以下よりご応募をお待ちしております!
https://rightcode.co.jp/recruit

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア