Django : 장고 tutorial 앱 작성하기 3단계

Jinsung·2021년 11월 10일
0
post-custom-banner

세팅

세팅 설정

mysite/settings.py 파일은 장고설정을 표현한 파이썬 모듈

데이터베이스 구동

default값은 SQLite로 구성되어 있으며 다른 데이터베이스로 확장하여 사용하는것이 좋습니다.

데이터베이스 바인딩 = 데이터베이스 구동

  • PostgreSQL을 사용하는 경우 psycopg2 패키지 가 필요합니다.
  • MySQL 또는 MariaDB를 사용하는 경우 와 같은 DB API 드라이버 가 필요합니다
    드라이버 : mysqlclient, MySQL Connector/Python등이 있지만 mysqlclient권장한다.
    mysqlclient : 드라이버는 스레드로부터 안전하며 연결 풀링을 제공
    설치
# Assume you are activating Python 3 venv
$ brew install mysql
$ pip install mysqlclient

setting.py 중간에 데이터베이스 정보를 확인

DATABASES = { 
	'default': { 
    	'ENGINE': 'django.db.backends.mysql', 
        'NAME': '데이터베이스 이름', 
        'USER': '아이디(ex:root)', 
        'PASSWORD': '비밀번호', 
        'HOST': 'localhost', 
        'PORT': '3306', 
     } 
}

settings.py 안에 있는 sqlite3를 지워주시고 mysql을 연동하기 위해 위의 구문을 넣어주세요.

ENGINE: mysql

NAME: 데이터베이스 명

USER: (따로 변경하지 않았다면) root

PASSWORD: oracle mysql을 설치하셨을 때 지정하신 비밀번호

HOST: localhost

PORT: 포트 번호를 적어주시면 됩니다.

다른 데이터 베이스를 사용하고 싶으면 데이터베이스 바인딩을 설치하고 데이터베이스 연결 설정과 맞게 끔 데이터베이스'default' 항목의 값을 다음의 키 값으로 바꾼다.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        ...
    },
}

시간 변경

mysite/settings.py 위치에서 time_zone 값을 asia/seoul로 변경

INSTALLED_APPS

setting에 installed_apps는 현재 Django 인스턴스에서 활성화된 모든 Django 어플리케이션들의 이름이 담겨 있습니다. 앱들은 다수의 프로젝트에서 사용될 수 있고, 다른 프로젝트에서 쉽게 사용될 수 있도록 패키징하여 배포할 수 있습니다.

  • django.contrib.admin – 관리용 사이트. 곧 사용하게 될 겁니다.
  • django.contrib.auth – 인증 시스템.
  • django.contrib.contenttypes – 컨텐츠 타입을 위한 프레임워크.
  • django.contrib.sessions – 세션 프레임워크.
  • django.contrib.messages – 메세징 프레임워크.
  • django.contrib.staticfiles – 정적 파일을 관리하는 프레임워크.

migrate

마이그레이션이란 모델의 변경 내역을 DB 스키마에 적용시키는 장고의 방법
스키마란 : db내에서 데이터가 저장되는 구조와 제약 조건을 정의한 것, 장고로 치면 하나의 어플리케이션의 models.py 파일이라고 할 수 있다.

명령어

python manage.py makemigrations [app_name]

마이그래이션을 생성하는 명령어
app_name을 입력하면 해당 app에 대해서만 마이그레이션을 생성하고 app_name을 생략하면 전체 app에 대해서 마이그레이션을 생성합니다.

python manage.py migrate [app_name][migration_name]

마이그래이션을 적용하는 명령어 즉 실제 DB에 변경사항을 적용하는 명령어라고 생각하면 된다.

  • makemigrations와 같이 app_name을 지정해서 특정 app만 migrate 할 수 있으며 app_name 뒤에 마이그레이션 파일의 이름을 지정하면 해당 번호(버전)의 마이그레이션을 적용하게 됩니다. 즉 이전 버전으로 되돌리는 것도 가능합니다.

그밖에

python manage.py showmigrations [app_name] # 프로젝트 마이그레이션에 대해 적용 여부 확인 
python manage.py sqlmigrate app_name migration_name #어떤 sql실행문이 실행되는지 보여준다

주의점

적용된 마이그레이션 파일은 절대로 삭제하시면 안됩니다. 각 마이그레이션은 이전 버전에 대해 의존성을 가지기 때문에 DB 전체가 돌아올 수 없는 강을 건널 수도 있습니다.
마이그레이션 파일을 삭제하시려면 반드시 적용을 해제하고 삭제하셔야 합니다.

post-custom-banner

0개의 댓글