웹/FastAPI

[FastAPI] DB(MySQL) 연결하기

2021. 1. 18. 22:59

FastAPI에 MySQL을 연결하는 방법에 대해 알아보자. 프로젝트 구조는 다음과 같다.

 

1) 프로젝트 구조

프로젝트 구조

2) secrets.json

secrets.json

git에 비밀번호나 중요정보를 노출시키지 않기 위해 secrets.json에 해당 정보들을 모아둘 생각이다.

꼭 .gitignore파일에 secrets.json을 추가시켜야 한다.

  • user: 유저 이름
  • password: 비밀번호
  • host: 호스트 주소
  • port: 포트번호
  • database: 스키마 이름

2) database.py

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

main.py

4) DB

생성된 테이블

저작자표시 비영리 (새창열림)

'웹 > FastAPI' 카테고리의 다른 글

[FastAPI] 이미지 파일 업로드하기  (0) 2021.01.28
[FastAPI] Query Parameters에 리스트 전달하기  (0) 2021.01.20
[FastAPI] FastAPI란?  (0) 2021.01.06
'웹/FastAPI' 카테고리의 다른 글
  • [FastAPI] 이미지 파일 업로드하기
  • [FastAPI] Query Parameters에 리스트 전달하기
  • [FastAPI] FastAPI란?
코택
코택
TaxFree코택 님의 블로그입니다.
코택
TaxFree
코택
전체
오늘
어제
  • 분류 전체보기 (369)
    • Spring (29)
      • Spring (18)
      • 스프링 핵심 원리 - 고급편 (11)
    • Spring Batch (4)
    • JPA (4)
    • CS (89)
      • 자료구조 (2)
      • 네트워크 (5)
      • 운영체제 (1)
      • 데이터베이스 (4)
      • SQL (7)
      • 알고리즘 이론 (4)
      • 알고리즘 문제 풀이 (66)
    • 웹 (28)
      • React.js (4)
      • Next.js (1)
      • Node.js (14)
      • FastAPI (4)
      • Django (5)
    • 프로그래밍 언어 (45)
      • Python (5)
      • Java + Kotlin (29)
      • JavaScript + TypeScript (11)
    • 테스트코드 (26)
      • ATDD, 클린 코드 with Spring (4)
      • 이규원의 현실 세상의 TDD: 안정감을 주는 코드.. (20)
    • 인프라 (6)
      • AWS (2)
      • Kubernetes (4)
    • 트러블슈팅 (25)
    • 책 (89)
      • Effective Java (54)
      • Effective Kotlin (14)
      • 도메인 주도 개발 시작하기: DDD 핵심 개념 정.. (11)
      • 웹 프로그래머를 위한 데이터베이스를 지탱하는 기술 (6)
      • 도메인 주도 설계 첫걸음 (4)
    • Git (10)
    • 회고 (5)
    • etc (8)

블로그 메뉴

  • 홈
  • 방명록
  • 관리
  • GitHub
  • LinkedIn

공지사항

  • 스킨 관련

인기 글

태그

  • dp
  • Shortest Path
  • 백준
  • 브루트포스
  • 파이썬
  • 장고
  • atdd
  • 그래프
  • Git
  • fastapi
  • BOJ
  • 그래프 탐색
  • 깊이 우선 탐색
  • mysql
  • http

최근 댓글

최근 글

hELLO · Designed By 정상우.
코택
[FastAPI] DB(MySQL) 연결하기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.