CleanPython 04 alembic을 통한 ORM 수정으로 DB 수정과 버전 관리
alembic --autogenerate을 이용한 ORM 수정 -> DB 수정
📜 제목으로 보기
alembic을 통한 ORM 수정을 통한 DB 수정과 버전 관리
alembic –autogenerate을 이용한 ORM 수정 -> DB 수정
-
terminal을 열고
-
alembic 설치 및 alembic 초기화
pip3 install alembic alembic init alembic
-
alembic 설정
-
./alembic.init 내부 sqlalchemy.url 주석 처리
-
./alembic/versions/env.py 설정
-
config객체에 sqlalchemy.url main_option 추가
config = context.config # set sqlalchemy.url db_url = "mysql+pymysql://root:564123@localhost:3306/cinema" if not config.get_main_option('sqlalchemy.url'): config.set_main_option('sqlalchemy.url', db_url)
-
target_metadata에 Base의 .metadata 할당 및
entity들 메모리에 띄워두기
(필수)# target_metadata = None from src.infra.config.base import Base from src.infra.entities import * target_metadata = Base.metadata
-
run_migrations_online메서드에 칼럼Type까지 비교하도록 context.configure에
compare_type=True
추가하기def run_migrations_online() -> None: #... with connectable.connect() as connection: context.configure( #... compare_type=True )
-
-
-
DB생성해놓은 상태에서 revision최초 하나 만들어주기
alembic revision -m "init entites" alembic upgrade head
-
Entity모델들을 수정한 뒤, alembic으로 DB 업데이트하기
-
절대 DB를 수작업으로 건들면 안된다.
- ORM수정에 따른 01 ORM으로 DB생성은 무시하면서 인식유지되더라
Entity .py를 삭제
할 땐,init에 걸어둔 것도 같이삭제
하자
# entity 수정후 alembic revision --autogenerate -m "add column" alembic upgrade head
-
절대 DB를 수작업으로 건들면 안된다.