사용자 도구

사이트 도구


python:django:models.py

models.py

plant/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 테이블에 수정일자와 등록일자 컬럼을 추가하였습니다.

  1. model.py 수정 (수정일,등록일 추가)
  2. python manage.py makemigrations
  3. python manage.py migrate

으로 다시 진행했네요.

models.py
    update_dt  = models.DateTimeField(auto_now=True)
    regist_dt = models.DateTimeField(auto_now_add=True)

Database에서 모델 가져오기

python manage.py inspectdb
python/django/models.py.txt · 마지막으로 수정됨: 2025/04/15 10:05 저자 127.0.0.1