본문 바로가기
FastAPI

alembic, db_url 환경변수에서 가져오기

by eit8 2023. 12. 10.

보안상 DB 접속 정보를 환경변수에 저장한 후 가져오는 방법을 소개 하고자 한다.

환경 변수는 권한에 따른 접근도 어렵고 관리도 쉬운편이다.

 

1. DB 접속 정보 (여기서는 mysql을 예로 든다.)

     db_url : mysql+pymysql://사용자명:비밀번호@호스트:포트번호/DB명

    db_url 은 임의로 정할 수 있고 시스템 변수에 등록해 준다.

 

2. 환경변수에 넣는 방법

    2-1.환경변수 편집들어가서 추가

 2-2 명령프롬프트에서 등록 

        setx db_url "mysql+pymysql://사용자명:비밀번호@호스트:포트번호/DB명:

 

3. 환경변수가  바로 적용되도록 시도해 볼 수 있는 것

     1. 레지스트리에 편집기에 가서 확인해 본다.

            HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

     2. 명령프롬프트에서 refreshenv 명령을 실행해 본다.

     3. vs code나 가상환경에서 작업한 경우 가상환경 deactivate  하고 다시 가상환경으로 진입해서 작업해 보길 바란다.

 

alembic 에서 환경변수가져오기

 

- 가상환경 상태에서 alembic을 설치해 준다.

 

pip install alembic

 

- 프로젝트 폴더인지 확인 후 

alembic init migrations

명령을 실행하면 프로젝트 폴더에 alembic.ini 와 env.py 파일이 생성된다.

alembic.ini 파일에서script_location = alembic으로 수정

 

아래 부분은 주석처리 해준다.

 

 env.py 을 열고

 

url 변수를 추가해 준다. db_url 은 환경변수에 저장한 변수명이다.

 

 

이 부분도 변경해 준다.

 

아래 명령어가 실행되면 연결은 성공한 것이다.

alembic revision --autogenerate

 

발생할 수 있는 에러들..

sqlalchemy.url를 찾을 수 없다는 에러가 날때는

 alembic.ini 주석처리 확인해 본다.

 

접근 할 수 없다는 에러가 날때는

mysql 권한이나, 방화벽등을 살펴본다.

또 db_url 이 잘못되었을 수도 있다.

print(url)

 env.py 에 넣고 디버깅 해보면 맞는 url 인지 확인 가능하다.

 

 

--참고사항

alembic.ini 파일에서 환경변수를 불러올 수 있다고 하는데...안되더라..

env.py 파일을 수정하세요~