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

IT 기술백서

직접 알아내거나 검색하기 귀찮아서 모아 둔 것

python | alembic (데이터베이스 마이그레이션) 사용법

본문

설치

[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]


댓글 0개

등록된 댓글이 없습니다.

Menu