DB를 먼저 설계하고 django와 연동하기 (4) - fake를 사용해 migrate 후 models.py 수정 반영하기
github 저장소 : https://github.com/bluebamus/synchronization-test-between-django-and-db
1. DB를 먼저 설계하고 django와 연동하기 (1) - 작업 정의
2. DB를 먼저 설계하고 django와 연동하기 (2) - migration 후 db 추가 설계 그리고 inspectdb
3. DB를 먼저 설계하고 django와 연동하기 (3) - inspectdb로 생성된 models.py로 migrations 후 비교
4. DB를 먼저 설계하고 django와 연동하기 (4) - fake를 사용해 migrate 후 models.py 수정 반영하기
5. DB를 먼저 설계하고 django와 연동하기 (5) - view table 테스트
6. DB를 먼저 설계하고 django와 연동하기 (6) - 함수와 lock 사용하기
1. 현재 상태 정리
- django project를 만들고 필수 table들을 만들기 위해 makemigrations 후 migrate를 실행했다.
- item, item_order, stock, stock_order 테이블을 직접 database에 만들었다.
- inspectdb를 이용해 root 위치에 models.py로 파일을 생성했다.
- sync app을 생성하고 item, item_order, stock, stock_order 테이블만 분리했다.
2. fake 사용하기
- makemigrations을 실행한다.
python manage.py makemigrations
- migrate를 fake를 이용해 실행한다.
python manage.py migrate --fake
- 터미널 정보 확인
- django_migrations 테이블 확인
- showmigrations 실행 후 로그 확인
python manage.py showmigrations
3. models.py 코드 수정 후 재동기화 테스트
- items 테이블 수정
- item_expiration 필드 추가 및 item_group index 삭제 후 item_expiration index 추가
class Items(models.Model):
item_name = models.CharField(max_length=20)
item_group = models.CharField(max_length=10)
item_number = models.IntegerField()
item_expiration = models.DateTimeField(blank=True, null=True)
default_order_stock = models.IntegerField(default=30)
created_at = models.DateTimeField(blank=True, null=True, auto_now_add=True)
class Meta:
managed = True
db_table = "items"
unique_together = (("item_name", "item_number"),)
indexes = [
models.Index(fields=["item_expiration"], name="item_expiration_idx"),
]
- makemigrations 및 migrate 로그 확인
- django_migrations 테이블 확인
- items 테이블 확인
- 이전에 직접 table에 설정한 default가 유지되는 상태에서 item_expiration 필드가 새로 추가 되었다.
- index 결과 확인
- 기존 item_group에 대한 index는 삭제되고 item_expiration에 대한 index가 추가 생성되었다.
4. 다음 작업
- view 테이블 생성 후 동기화
- 프로시저를 만들어 CURD 테스트, 프로시저 lock 테스트
- reference :
https://blex.me/@baealex/django-migrate-%EC%9E%98-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0
'Study > django' 카테고리의 다른 글
DB를 먼저 설계하고 django와 연동하기 (6) - 함수와 lock 사용하기 (0) | 2023.12.14 |
---|---|
DB를 먼저 설계하고 django와 연동하기 (5) - view table 테스트 (1) | 2023.12.12 |
DB를 먼저 설계하고 django와 연동하기 (3) - inspectdb로 생성된 models.py로 migrations 후 비교 (1) | 2023.12.08 |
DB를 먼저 설계하고 django와 연동하기 (1) - 작업 정의 (0) | 2023.12.04 |
[udemy] - Build a Backend REST API with Python & Django - Beginner 학습 정리 (1) | 2023.10.20 |
댓글