alembic (데이터베이스 마이그레이션) 사용법 > IT 기술백서

설치

[code]

pip install alembic

[/code]

초기화

[code]

$ alembic init myproject

[/code]

초기화 하면 아래 구조의 파일이 생성된다

alembic.ini

myproject

    verions

    env.py

    README

    script.py.mako

디비설정

$ vim alembic.ini

[code]

# db 연결 문자열을 자신의 상황에 맞게 수정한다.

sqlalchemy.url = driver://user:pass@localhost/dbname

[/code]

마이그레이션 스키마 파일 생성

[code]

$ alembic revision -m “create table user”

[/code]

version 아래에 파일이 생성된다.

$ vim 생성된파일.py

[code]

“””create user table

Revision ID: 27184ba499e4

Revises: 

Create Date: 2022-01-25 14:04:56.666819

“””

from xmlrpc.client import DateTime

from alembic import op

import sqlalchemy as sa

# revision identifiers, used by Alembic.

revision = ‘27184ba499e4’ # 버전 해시코드

down_revision = None

branch_labels = None

depends_on = None

# upgrade 했을때 실행 함수

def upgrade():

    # 테이블 생성 스크립트

    op.create_table(

        ‘users’,

        sa.Column(‘id’, sa.Integer, primary_key=True),

        sa.Column(‘username’, sa.String(40), index=True),

        sa.Column(’email’, sa.String(40), nullable=False),

        sa.Column(‘disabled’, sa.Boolean(), default=False),

        sa.Column(‘hashed_password’, sa.String(255), nullable=False),

        sa.Column(‘created_at’, sa.DateTime, nullable=True),

        sa.Column(‘updated_at’, sa.DateTime, nullable=True)

    )

# 롤백 했을때 실행 함수

def downgrade():

    # 테이블 삭제 스크립트

    op.drop_table(‘users’)

[/code]

마이그래이션 실행

[code]

$ alembic upgrade head

[/code]

: 실행하고 나면 users 테이블과 alembic_version 테이블이 생성되어 있다.

히스토리 보기

[code]

$ alembic history

[/code]

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤