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 にアクセスしてみましょう。

fastapi_2-1

改良したadminページ

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

第2回:さいごに

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

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

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

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

関連記事

ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

関連記事