Python/Utils

파이썬 alembic으로 데이터베이스 테이블 생성 예제

jimmy_AI 2024. 8. 4. 19:07
반응형

Python 코드 내에서 정의한 스키마의 SQL 테이블을 자동으로 마이그레이션하도록

도와주는 alembic의 사용 방법 예제를 간략하게 정리해보도록 하겠습니다.

 

 

SQLAlchemy 모델 정의

먼저, sqlalchemy를 활용하여 원하는 테이블의 스키마를 정의해야 합니다.

 

다음과 같은 간단한 스키마의 테이블을 가정해보도록 하겠습니다.

파일 이름은 models.py를 가정으로 하며, DB url까지 해당 파일에 명시해줍니다.

해당 스키마로 생성할 테이블 이름은 'users'로 가정하겠습니다.

# models.py
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String, nullable=False)
    email = Column(String, unique=True, nullable=False)

engine = create_engine('데이터베이스 url')
Base.metadata.create_all(engine)

 

 

Alembic 환경 설정

이후, 터미널에서 다음 명령어를 입력합니다.

alembic init alembic

 

그러면 alembic 폴더가 생기고, 내부에 있는 alembic.ini 파일을 열어줍니다.

이후, 해당 파일 내에서 DB의 url을 적어줍니다.

# alembic.ini 파일에서 sqlalchemy.url 부분을 수정
sqlalchemy.url = 데이터베이스 url

 

다음 단계로, alembic 폴더 내의 env.py 파일을 열어주고,

파일의 앞 부분에 다음의 코드를 추가해줍니다.

# models.py 파일 import(상대 경로에 유의)
from models import Base

# SQLAlchemy 모델 추가
target_metadata = Base.metadata

 

이 import 과정에서 models.py 파일의 디렉토리에 유의해주세요.

 

 

마이그레이션 적용

위의 환경 설정이 모두 완료되었다면,

다음의 명령어를 실행하여 마이그레이션을 생성합니다.

(users 부분에 원하는 테이블 이름을 적어주시면 됩니다.)

alembic revision --autogenerate -m "create users table"

 

마지막으로, 다음 명령어를 입력하여 데이터베이스 업데이트를 진행합니다.

alembic upgrade head

 

이 과정까지 완료되었다면 해당 DB url에 지정한 스키마의 테이블이 생성된 것을

확인해볼 수 있을 것입니다.

 

제 글이 조금이라도 도움이 되셨길 기원하겠습니다.

잘 봐주셔서 감사드립니다.