Django에서 커스텀 마이그레이션 만들기

구경회·2021년 11월 16일
1
post-thumbnail

무엇인가

장고에서는 DDL을 마이그레이션 파일로 관리한다. 보통 개발팀의 규모가 커지고 DBA가 따로 존재할 경우에는 굳이 신경쓰지 않지만, 소규모의 팀에서 DDL을 관리하기 위해서는 마이그레이션파일을 작성하는 것이 편리하다.

하지만 이 때 일반적인 DDL과 다르게 문제가 되는 것이 CREATE EXTENSION과 같은 특수한 구문들이다. 이런 구문들은 어떻게 관리해야하는가?

어떻게

python manage.py makemigrations --name create_extension core --empty

위와 같이 입력한다.

이에 대해 위와 같이 결과가 나왔으면 된다.

이 때 마이그레이션 파일은

# Generated by Django 3.1 on 2021-11-16 16:25

from django.db import migrations


class Migration(migrations.Migration):

    dependencies = [
    ]

    operations = [
    ]

위와 같이 텅 비어있을 것이다.

# Generated by Django 3.1 on 2021-11-16 16:25
from django.contrib.postgres.operations import CreateExtension
from django.db import migrations


class Migration(migrations.Migration):

    dependencies = []

    operations = [
        CreateExtension("cube"),
        CreateExtension("earthdistance"),
    ]

이제 이 부분들을 위와 같이 수정해주자. CreateExtension의 인자로 extension의 이름을 넣어주면 된다. 이번에는 cubeearthdistance를 사용할 것이라 위와 같이 했다.

그 후 정상적으로 migrate를 진행하면 된다.

확인

PostgreSQL상에서 다음과 같은 쿼리를 날려보자.

SELECT *
FROM pg_extension;

이 결과로


위와 같이 두 개의 extension이 잘 설치된 것을 확인할 수 있다.

profile
즐기는 거야

0개의 댓글