fbpx
  1. HOME
  2. ブログ
  3. IT技術
  4. 【Python】[第2回:前編] Responderを使ってDjangoチュートリアルをやってみた【データベース・モデル構築編】

【Python】[第2回:前編] Responderを使ってDjangoチュートリアルをやってみた【データベース・モデル構築編】

Responderを使ってDjangoチュートリアルをやってみた~第2回:前編~

 

今回も、Responder(レスポンダー)を使って「Djangoのチュートリアル」をやってみたいと思います。

Responderで追う形になりますので、多少内容が異なる部分がありますが、成果物はできるだけ同じモノになるよう作る予定です。

今回は、Django のチュートリアル「はじめての Django アプリ作成、その2」をご参考下さい。

【はじめての Django アプリ作成、その2】
https://docs.djangoproject.com/ja/2.2/intro/tutorial02/

第1回はこちら

データベースの構築

Responder単体では、Djangoのように単体で簡単にデータベース作成はできません。

そこで、「SQLAlchemy(エスキューエルアルケミー)」と呼ばれる、Pythonでデータベース管理ができるライブラリの力を借りることにしました。

他にも、データベース管理のためのPythonライブラリはあるようですが、情報がたくさんあるSQLAlchemyを使うことにします。

データベースを構築

では、早速データベースを構築していきましょう!

今回は、SQLite3を使ってデータベースを構築していきます。

以下は、データベースの設定ファイル db.py です。

作成場所は、プロジェクトのルートで構いません。

現段階では、SQLAlchemyを触ったことのない人にとっては何が書いてあるか分からないかもしれません。

でも、今の段階では深く理解する必要はありません。

「ああ、SQLite3っていうデータベースを使うんだな」くらいに思っていただければOKです。

モデルの定義

今回、必要なテーブル(モデル)は、以下の通りとなります。

Question テーブルid(主キー)、question_text(質問事項)、pub_date(公開日時)
Choice テーブルid(主キー)、question(紐づけられた質問)、choice_text(選択肢テキスト)、votes(投票数)
User テーブルid(主キー)、username(ユーザ名)、password(ハッシュ化されたパスワード)

これらは、SQLAlchemyにおいてクラスで定義可能です。

models.py

これらのモデル定義をするために、 models.py を作成し、以下のように記述します。

コードを見てわかるように、各クラスのメンバ変数が各テーブルのレコードの要素となります。

このとき、各モデルのインスタンスを print() できるように def __str__() も実装しておきましょう!

実行してみよう!

さて、実際に models.py を実行してみてください。

db.sqlite3 というファイルが生成されたかと思います。

では、実際にモデルの定義ができたか確認してみましょう!

で作成したデータベースにアクセスします。

しっかりテーブルが作成できました!

サンプルのデータを挿入してみる

それでは、適当なデータを挿入してみましょう。

このとき、Userテーブルには管理者ユーザ(admin)を追加することにします。

早速、 sample_insert.py (ファイル名はなんでも良い)を作成しましょう!

SQLAlchemyでは、このようにデータをデータベースに追加が可能です。

データベースをいじる際には、 import models と import db を忘れないようにしましょう。

simple_insert.py を実行してみる!

では、 simple_insert.py を実行してみましょう!

すると、 models.py で定義された各モデルのコンストラクタ __init__()に、引数にとったデータが渡され、各テーブルに db.session.commit() で挿入されます。

確認

うまく挿入できたか確認してみましょう!

うまく挿入できていそうです!

第2回:後編に続く

第2回:後編はこちらになります。

関連記事

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

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

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

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

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

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

採用情報はこちら

関連記事