Data

Alembic. 버전 관리 테이블이 생성될 스키마 지정하기

Tigris 2023. 9. 3. 10:36

Alembic이 적용된 DB에는 적용된 Revision을 기록하기 위한 `alembic_version`과 같은 테이블이 생성되게 된다. (큰 상관이 없을 수도 있지만) 서비스와 관련된 테이블과 같은 곳에 있는 것은 구분을 어렵게 하므로 다음 방법을 통해 Alembic과 관련된 테이블을 별도의 스키마에 저장할 수 있다.

# In env.py,
from sqlalchemy.schema import CreateSchema


def run_migrations_online():
    ...
    with connectable.connect() as connection:
        context.configure(
	        connection=connection,
	        target_metadata=target_metadata,
	        include_schemas=True,  # 추가
	        version_table_schma="schema_name",  # 추가
        )

		# Schema가 존재하지 않을 경우 생성하도록 아래 코드 추가
		if not connection.dialect.has_schema(connection, "schema_name"):
		    connection.execute(CreateSchema("schema_name"))
	...

잘못된 내용, 오타, 부정확한 문장 등 어떤 피드백이든 환영합니다. 감사합니다.


References

https://blog.neonkid.xyz/257
https://stackoverflow.com/questions/50927740/sqlalchemy-create-schema-if-not-exists