FastAPI에 MySQL을 연결하는 방법에 대해 알아보자. 프로젝트 구조는 다음과 같다.
1) 프로젝트 구조
2) secrets.json
git에 비밀번호나 중요정보를 노출시키지 않기 위해 secrets.json에 해당 정보들을 모아둘 생각이다.
꼭 .gitignore파일에 secrets.json을 추가시켜야 한다.
- user: 유저 이름
- password: 비밀번호
- host: 호스트 주소
- port: 포트번호
- database: 스키마 이름
2) database.py
MySQL에 연결시키기 위해 sqlalchemy와 pymysql모듈을 설치해준다.
$pip install sqlalchemy
$pip install pymysql
DB_URL은 "mysql+pymysql://[유저이름]:[비밀번호]@[호스트주소]:[포트번호]/[스키마이름]?charset=utf8"로 구성된다.
- engine: DB엔진을 만든다.
- SessionLocal: 데이터베이스 세션 클래스, 이를 이용해 생성한 인스턴스가 실제 데이터베이스 세션이 된다.
- Base: DB모델이나 클래스를 만들기 위해 선언한 클래스(후에 상속해서 사용함)
engine, SessionLocal, Base는 main.py에서 서버를 실행시키는데 사용된다.
DB연결만을 확인하기 위해 중간 과정은 생략한다. 자세한 정보(models.py, schemas.py)는 공식문서를 확인하도록 한다.
공식문서에 따르면 schemas.py에서 json의 형태로 전달되는 데이터 형식을 정의할 수 있다. 공식문서에서 이 부분에 대한 예제가 조금 부족한 감이 있었다.
models.py에서 스키마를 작성한 후 main.py에서 다음과 같은 코드를 작성하면 DB에 정상적으로 테이블이 생성되는 것을 확인할 수 있다.
3) main.py
4) DB
'웹 > FastAPI' 카테고리의 다른 글
[FastAPI] 이미지 파일 업로드하기 (0) | 2021.01.28 |
---|---|
[FastAPI] Query Parameters에 리스트 전달하기 (0) | 2021.01.20 |
[FastAPI] FastAPI란? (0) | 2021.01.06 |