📙
Daeun's devlogs
  • First page
  • Docker
    • 이미지, 레이어
    • 컨테이너 생성하기
    • Dockerfile로 이미지 생성하기
    • 이미지를 dockerhub repo에 push하기
  • Python
  • Algorithm Study
  • 방향없는 그래프(undirected graph)
  • 방향있는 그래프(directed graph)
  • 위상 정렬(topological sort)
  • BFS(Breadth-First Search)
  • 다익스트라(Dijkstra)
  • 벨만-포드(Bellman-Ford) 알고리즘
  • 최소신장트리(Minimum Spanning Tree)
  • 크루스칼(Kruskal) 알고리즘
  • Algorithm quiz
    • quizzes & solutions
    • graph에서 cycle 유무 확인하기
    • bipartite(이분그래프) 확인하기
    • Dijkstra 알고리즘으로 모든 정점으로의 최단 경로 구하기
  • operating system
  • 스루풋 & 레이턴시
  • Cloud Computing
    • cloud computing 의 종류
    • CloudFormation으로 EC2 & ElasticIP 생성하기
  • Network
    • DataLink 계층
    • Network 계층
    • subnetting & CIDR
    • Domain Name System
    • Transport 계층
  • Unix
    • dig 커맨드로 DNS서버에 질의하기
    • APT(Advanced Package Tool)로 젠킨스 설치하기
    • usermod 로 그룹에 유저 추가하기
    • sysctl 로 커널 변수 조회하기
  • Django
    • 마이그레이션 실행여부 확인하기
    • 마이그레이션 DDL 쿼리 확인하기
  • Kubernetes
  • 쿠버네티스(Kubernetes) 개념
  • k8s 클러스터에 애플리케이션 서버 실행하기
  • kops로 AWS에 k8s 클러스터 생성하기
  • k8s 클러스터에 replicaset 생성하기
  • Nginx & WSGI pod를 service로 노출하기
  • Helm으로 쿠버네티스 리소스 배포하기
Powered by GitBook
On this page

Was this helpful?

  1. Django

마이그레이션 DDL 쿼리 확인하기

작성일 [2020.01.13]

장고에서 어떤 마이그레이션 파일이 실행하는 DDL 쿼리를 확인해야 할 때가 있다. manage.py migrate <app_name> 으로 마이그레이션을 실행하기 전에 SQL쿼리를 확인하고자 할때는 sqlmigrate 을 사용한다.

$ python manage.py sqlmigrate <app_name> <마이그레이션 파일번호>

예를 들어, student 앱의 0001번 마이그레이션 파일이 실행하는 DDL 쿼리를 확인하려면 아래의 명령어를 실행한다.

$ python manage.py sqlmigrate student 0001

주의) DB에서 생성된 제약 조건의 실제 키 이름을 출력하기 위해 DB와 연결이 되어 있어야 한다.

class Student(models.Model):
    univ = models.ForeignKey(Univ, related_name='students')
    name = models.CharField(max_length=5)
    grade = models.SmallIntegerField(default=1)
    is_graduated = models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = 'student'

위에 정의된 모델 Student를 생성하는 마이그레이션의 DDL 쿼리를 출력해보자.

$ python manage.py sqlmigrate student 0001
...
BEGIN;
--
-- Create model Student
--
CREATE TABLE "student" (
"id" serial NOT NULL PRIMARY KEY, 
"name" varchar(5) NOT NULL, 
"grade" smallint NOT NULL, 
"is_graduated" boolean NOT NULL, 
"created_at" timestamp with time zone NOT NULL, 
"updated_at" timestamp with time zone NOT NULL, 
"univ_id" integer NOT NULL);

ALTER TABLE "student" 
ADD CONSTRAINT "student_univ_id_3534536f_fk_univ_id" 
FOREIGN KEY ("univ_id") REFERENCES "univ" ("id") 
DEFERRABLE INITIALLY DEFERRED;

CREATE INDEX "student_d42eeeb9" ON "student" ("univ_id");

COMMIT;

주석과 함께 DDL 쿼리를 출력한다. 마이그레이션은 단일 트랜잭션 안에서 실행되므로 마이그레이션 실행 도중에 에러가 발생할 경우 롤백(rollback) 처리된다.

출처

  • https://docs.djangoproject.com/en/3.0/ref/django-admin/#django-admin-sqlmigrate

Previous마이그레이션 실행여부 확인하기Next쿠버네티스(Kubernetes) 개념

Last updated 5 years ago

Was this helpful?