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