-
[django] DB 생성과 마이그레이션Programing/Python 2019. 4. 9. 07:27
장고 앱에서는 MVT(Model/View/Template) 구조를 가지고 있는데요.
데이터 생성 및 관리를 Model 에서는 database를 사용하고 있습니다.
sqlite를 default database로 사용하고 있는데 확장성을 위해서 다른 데이터베이스도 사용이 가능합니다.
이 글에서는 프로젝트 내에 앱과 DB 생성 과정을 정리해 보았습니다.
1. app 생성
$> python manage.py startapp elections 2. app 생성 확인
$> tree
├── elections
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ │ ├── __init__.py
│ │ └── __pycache__
│ │ └── __init__.cpython-36.pyc
│ ├── models.py
│ ├── __pycache__
│ │ ├── admin.cpython-36.pyc
│ │ ├── __init__.cpython-36.pyc
│ │ └── models.cpython-36.pyc
│ ├── tests.py
│ └── views.py
├── manage.py3. settings.py 에 elections app 추가
12345678910INSTALLED_APPS = ['polls.apps.PollsConfig','django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','elections',]4. model.py 수정
1234567from django.db import models# Create your models here.class Candidate(models.Model):name = models.CharField(max_length=10)introduction = models.TextField() # no limit of lengarea = models.CharField(max_length=15)party_number = models.IntegerField(default=1)5. makemigrations :0001_initial.py 생성
$> python manage.py makemigrations
Migrations for 'elections':
elections/migrations/0001_initial.py
- Create model Candidate6. initial.py 파일 생성 확인
12345678910111213141516171819class Migration(migrations.Migration):initial = Truedependencies = []operations = [migrations.CreateModel(name='Candidate',fields=[('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),('name', models.CharField(max_length=10)),('introduction', models.TextField()),('area', models.CharField(max_length=15)),('party_number', models.IntegerField(default=1)),],),]7. 실제 DB 파일 생성
$> python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, elections, polls, sessions
Running migrations:
Applying elections.0001_initial... OK8. DB 확인
$> sqlite3 db.sqlite3
SQLite version 3.22.0 2018-01-22 18:45:57
Enter ".help" for usage hints.
sqlite> .tables
auth_group django_content_type
auth_group_permissions django_migrations
auth_permission django_session
auth_user elections_candidate
auth_user_groups polls_choice
auth_user_user_permissions polls_question
django_admin_log다음과 같이 DB 테이블이 생성된 것을 확인할 수 있습니다.
※ 위 내용은 programmers.co.kr 온라인 강의를 수강한 후에 작성되었습니다.
'Programing > Python' 카테고리의 다른 글
[django] shell 사용하기 (0) 2019.04.09 [django] admin page를 통해 DB data 생성 (0) 2019.04.09 [python] string formater (0) 2019.04.08 [Django] 서버주소 0.0.0.0 (0) 2019.04.08 [Django] Invalid HTTP_HOST header:, You may need to add 'x.x.x.x' to ALLOWED_HOSTS (0) 2019.04.08