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