Djangoで使えるデータベース: MySQL, PostgreSQL, SQLite
Djangoはプロジェクトにスクリプトを書くと、テーブルを自動生成する
### データベースの設定
– プロジェクトフォルダのsettings.pyを開く
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
– ENGINE: アクセスに使われるプログラム名
– NAME: データベース名 SQLiteの場合、パスを設定する
– mysqlの場合
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'databasename', 'USER': 'root', 'PASSWORD': 'password', 'HOST': 'localhost', 'PORT': '3306', } }
– PostgreSQLの場合
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'databasename', 'USER': 'root', 'PASSWORD': 'password', 'HOST': 'localhost', 'PORT': '5432', } }
### モデルの作成
– アプリケーションのmodels.pyを開く
/hello/models.py
from django.db import models # Create your models here.
モデルクラスの作成
– 書き方はFormクラスとほぼ同じ
– django.db.modelsにあるModelクラスを継承している
– def __str__(self)はテキストの内容を返すもの
from django.db import models class Friend(models.Model): name = models.CharField(max_length=100) mail = models.EmailField(max_length=200) gender = models.BooleanField() age = models.IntegerField(default=0) birthday = models.DateField() def __str__(self): return '<Friend:id=' + str(self.id) + ', ' + self.name + '(' + self.age + ')>'
### マイグレーションファイルの作成
$ python manage.py makemigrations helloMigrations for ‘hello’:
hello/migrations/0001_initial.py
– Create model Friend
### マイグレーションの実行
$ python manage.py migrate
作成されたmigrantionファイル
/hello/migrations/0001_initial.py
from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ] operations = [ migrations.CreateModel( name='Friend', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100)), ('mail', models.EmailField(max_length=200)), ('gender', models.BooleanField()), ('age', models.IntegerField(default=0)), ('birthday', models.DateField()), ], ), ]
– Migrationクラスはdjango.db.migraitonsにあるクラス
– operationsが実行するクラス