[Django]初心者のためのDatabase
カテゴリ:Pythonの話
databaseとは
こんにちは!今回はdjangoにおけるdatabaseの使い方について解説したいと思います。正直なところ、僕も初学者なため至らない点があるかと思いますが、参考になれば幸いです!
そもそもDatabaseとは何なのか?簡単にいうならば、データの格納庫であり、Webアプリケーションから指示を出すことで、データの保存、呼び出し、更新、削除を行うことができます。データの保存を行う時などには、必要不可欠なアプリケーションです。
また、Databaseにはいくつか種類があり、Djangoでは標準でSQLiteを利用していて、他にもMySQL、PostgreSQL、Oracleも利用することができます。勉強目的では、かなりシンプルであるSQliteが好ましいですが、大規模アプリ開発などが必要なときには、SQLiteでは不足する部分が出る可能性があります。
データの格納
SQLiteでは、テーブルという表形式のイメージでデータを格納します。
下の表が今回格納するデータになります。
BookID | 書名 | 著者 |
1 | Python No.1 | Python Taro |
2 | Python No.2 | Python Jiro |
3 | Python No.3 | Python Saburo |
これをもとにした、テーブルを以下のように定義します。
論理名 | 物理名 | データ型 | 主キー |
---|---|---|---|
BookID | bookid | INTEGER (整数) | ○ |
書名 | title | VARCHAR(100) (文字列100バイト) | |
著者 | author | VARCHAR(30) (文字列30バイト) |
これをテーブルレイアウトとよび、それぞれの項目は以下の意味を持ちます。
論理名 | 項目の日本語名で、多くの人が理解しやすい名前をつけます。 |
物理名 | 項目のDatabase内の名前で、開発者が理解しやすい名前をつけます。 |
データ型 | 各項目のデータ種別(数値、文字列など)を指定します。 |
主キー (プライマリーキー、Primary Key) | テーブルの中で、一意の値(重複がない値。ユニークな値)を設定するデータ項目に○をつけます。 主キーに○をつけた酷木に設定した値(このテーブルレイアウトであればBookIDに設定した値:1、2、3)を指定して、テーブル内の行を選択します。データの背番号とも言えます。 |
基本的に一つのWebアプリケーションには複数のテーブルを用います。一つのアプリケーションには一つのDatabaseがあるので、一つのDatabaseに複数のテーブルをつくるというデータ構造になります。
Databaseを使おう!
Databaseにデータを格納するためにDatabaseを取り扱うためのSQLというDatabase独自の言語を使用しなければいけません。つまり、Webアプリケーションを作成する言語の他にSQLについてもしっかりと理解する必要がありそうですよね。。。
しかしながら、DjangoにはSQLについての知識が浅くても、Databaseを操作できる仕組みがあります。通常のWebアプリケーションを作る過程で、多くの場合Databaseが必要になるので枠組みを作成した後にDatabaseを操作するという流れになります。
今から簡単なWebアプリケーションを作成する手順を説明します。
アプリの枠組みの作成
(1)ディレクトリへ移動して以下のコマンドを実行します。
django-admin startproject first
(2)マイグレーションファイルを適用するために、以下を実行します。
cd first
python manage.py migrate
今回の内容とはあまり関係ないので詳しくは説明しませんが、マイグレーションとは、アプリケーションで使うDatabaseの定義を自動的に作成・管理する機能のことです。
(3)以下のコマンドを実行します。
python manage.py startapp books
下記のようなbooksディレクトリが作成されました!
以上で枠組みは完成です!
Databaseの準備
(1)model(books/models.py)にテーブルレイアウトを記述します。
# Create your models here.
class Book(models.Model):
# bookid : INTEGER型で、主キー
bookid = models.IntegerField(primary_key=True)
# 書名 : 文字列100桁
title = models.CharField(max_length=100)
# 著者 : 文字列30桁
author = models.CharField(max_length=30)
(2)firstプロジェクトに、booksアプリを作成したことを記述します。
first/settings.pyのINSTALLED_APPSの次に「’books.apps.BooksConfig’,」を追加します。
次に、以下のコマンドを実行します。
python manage.py makemigrations books
実行結果は、
Migrations for ‘books’:
books/migrations/0001_initial.py
– Create model Book
ここまでの操作で、migrateコマンドを利用したときにSQL文が準備されました。
(3)SQL文を確認します。
以下のコマンドを実行します。
python manage.py sqlmigrate books 0001
(4)マイグレーションファイルを適用します。
python manage.py migrate
以上の操作でSQL文を自分で編集することなくDjangoでbooksアプリにテーブルを作成することができました。
このテーブル作成の流れはwebアプリ作成の際には何度も使うことになると思うのでしっかりと覚えておきたいですね!
データの登録の手順やその確認の仕方などは今回は紹介しなかったので、機会があれば今後、紹介したいと思います!