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が実行するクラス