[Python Django] 모델(Model) 생성 및 적용

2022. 3. 23. 12:12Python/Django Framework

반응형

APP  모델 생성 및 적용

1. 모델 생성을 위한 정보를 생성한다

project1/project_user/models.py
모델에는 현재 앱의 데이터베이스 테이블의 구성을 입력한다고 생각하면 됩니다.
# project1/project_user/models.py

from django.db import models


class ProjectUser(models.Model):
    user_name = models.CharField(max_length=32, verbose_name="이용자 명")
    user_password = models.CharField(max_length=64, verbose_name="비밀 번호")
    reg_dttm = models.DateTimeField(auto_now=True, verbose_name="등록 시간")

    class Meta: # 테이블의 추가적인 정보를 입력합니다.
        db_table = 't_project_user' # 테이블 명을 지정해줍니다.

2. makemigrations  명령어로 마이그레이션 파일을 생성해줍니다.

makemigrations 명령어를 실행하면 setting.py에 등록된 INSTALLED_APP에 등록된 앱들의 models.py 파일을 돌면서 변경된 사항을 파일로 생성해줍니다.
$ python3 manage.py makemigrations
파일은 migrations 디렉토리 내에 순차적으로 생성됩니다. 내용을 살펴보시면 테이블을 생성하거나 수정하는 등의 내용이 들어있는 것을 확인 할 수 있습니다.
#project1/project_user/migrations

$ ll
-rw-r--r--  1 minkyuseo  staff   723B Feb 27 19:04 0001_initial.py

3 마이그레이션 파일을 실행해줍니다.

첫 실행이라 시스템 내부에서 사용하는 모델에 대한 마이그레이션도 동시에 일어났습니다. 우리가 정의한 project_user에 대한 작업도 실행된 것을 확인 할 수 있습니다. 
$ python3 manage.py migrate

  Apply all migrations: admin, auth, contenttypes, project_user, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying project_user.0001_initial... OK
  Applying sessions.0001_initial... OK

4. 데이터 확인하기

우리가 데이터베이스를 설치한적이 없는데, 우리가 지정한 모델은 어디에 데이터베이스를 만들고 테이블을 생성하였을까요? 기본적으로 django로 프로젝트를 생성하게되면 sqlite3를 설치하여 데이터베이스로 사용하게됩니다. 마이그레이션을 진행하게되면 db.sqlite3 파일을 생성하여 데이터베이스를 만들고 테이블을 생성합니다.

해당 설정은 project1/project1/setting.py 파일안에 되어있으며, 데이터베이스 파일명의 변경이나 데이터베이스 변경은 setting.py에서 설정하게되는데, 간단히 테스트 할 때는 sqlite3를 이용하도록 하겠습니다.
# project1/project1/settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}
$ sqlite3 db.sqlite3

SQLite version 3.37.2 2022-01-06 13:25:41lite3 db.sqlite3
Enter ".help" for usage hints.

sqlite> .tables
auth_group                  django_admin_log          
auth_group_permissions      django_content_type       
auth_permission             django_migrations         
auth_user                   django_session            
auth_user_groups            t_project_user  # t_project_user확인          
auth_user_user_permissions
sqlite> .exit
반응형