-
FastAPI에 pymysql(DB) 연결하기Today I Learned 2024. 8. 21. 20:00
Q: 앞에서 무심코 사용한 uvicorn에 대한 이해가 필요하다.
fast api는 GIL문제로 멀티스레딩으로 제대로 된 다중처리가 불가능 하다고 한다..?pymysql 에 연결하려면, 우선 Mysql을 설치해야한다.
pymysql은 MySQL 서버에 연결하기 위한 클라이언트 라이브러리일 뿐이기에 MySQL 서버가 실행중이지 않으면, pymysql도 실행할 수 없다.1. MySQL 설치
그러므로 먼저 MySQL을 설치한다.
brew install mysql
후에 밑에 참고 링크를 통해 mysql 설치 & 초기 설정을 해주었다!2. MySQL 데이터베이스 생성
미리 mysql로 데이터베이스를 생성하고,
pymysql 에서는 미리 생성된 데이터베이스에 연결 -> 데이터 CRUD 가 가능하게 된다.create database fastapi_test;
위처럼 데이터베이스를 확인했으면 이제 pymysql로 연결하는 코드를 작성한다.
3. pymysql 로 데이터베이스 연결 & 스키마 작성
## create_tables.py import pymysql def create_tables(): # connect로 mysql 접속 db = pymysql.connect( host='localhost', user='사용자이름', password='비밀번호', database='fastapi_test', # 데이터베이스 이름 charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor ) try: with db.cursor() as cursor: # 데이터베이스와 테이블 생성 cursor.execute(""" CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, email VARCHAR(255) UNIQUE NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) """) db.commit() finally: # 연결해제 db.close() if __name__ == "__main__": create_tables()
python create_tables.py
로 테이블을 생성한 후
터미널에서 mysql로 테이블 스키마가 생성됐는지 확인할 수 있다.- users 테이블 스키마 확인
먼저 use fastapi_test; 로 현재 데이터베이스로 이동한 다음(git의 checkout 같은...)
desc users; 로 users 테이블의 스키마를 확인한다.위와같이 잘 생성된 것을 확인할 수 있다.
다음 글에 본격적으로 GET, POST, DELETE 로 테이블의 데이터 변경을 하려한다.참고 자료
'Today I Learned' 카테고리의 다른 글
[글또10기] 글또의 6개월 활동 회고 (1) 2025.03.30 FastAPI로 GET, POST, DELETE 실행해보기 (0) 2024.08.22 FastAPI 구현해보기 (0) 2024.08.21 [네이버 부스트캠프 9기 챌린지] 최종 회고 (2) 2024.08.12 [네이버 부스트캠프 챌린지] 3주차 회고 (0) 2024.08.12