====== models.py ======
from django.db import models
class PyBlog(models.Model):
id = models.IntegerField(primary_key=True, null=False)
title = models.CharField(max_length=100)
class Meta:
db_table = 'py_blog'
===== DATABASE 반영 =====
==== DATABASE 초기화 ====
기존 데이터베이스를 초기화가 필요할 수 있다. 이럴때는 기존 migration내역을 삭제할 필요가 있다.
$ find . -path "*/migrations/*.py" -not -name "__init__.py" -delete $ find . -path "*/migrations/*.pyc" -delete
$ find . -path "*/migrations/*.pyc" -delete
=== db.sqlite3사용한다면 ===
프로젝트의 root 디렉토리에 위치한 **db.sqlite3 파일을 삭제**합니다.
=== migration ===
django 로 DB 생성할때 최초에 한번 migration 하는것처럼 위와 같은 명령어로 동일하게 수행합니다.
python manage.py migrate
==== makemigrations ====
makemigrations 은 모델을 변경시킨 사실과
새로운 모델을 만들었다는것을 DJango에게 알려주는 명령어 입니다.
$ python manage.py makemigrations
makemigrations 을 실행하면 myapp/blog/migrations/0001_initial.py 파일이 생긴 것을 확인할 수 있습니다.
==== migrate ====
migrate는 migration을 감지된 모델들을 실행하고,
자동으로 데이터베이스 스키마를 관리해주는 기능을 합니다.
이제 migrate명령을 실행하면 py_blog 테이블이 생길것입니다.
$ python manage.py migrate
==== migration SQL 확인 ====
실질적으로 수행되는 SQL문장을 확인 할 수 있다.
python manage.py sqlmigrate [app_label] [migration_name]
==== showmigrations ====
현재 migrations목록을 확인 할 수 있다.
python manage.py showmigrations
==== 모델수정 ====
py_blog 테이블에 수정일자와 등록일자 컬럼을 추가하였습니다.
- model.py 수정 (수정일,등록일 추가)
- python manage.py makemigrations
- python manage.py migrate
으로 다시 진행했네요.
update_dt = models.DateTimeField(auto_now=True)
regist_dt = models.DateTimeField(auto_now_add=True)
===== Database에서 모델 가져오기 =====
python manage.py inspectdb