RDB는 관계형 데이터 베이스의 약어입니다. 전통적으로 많이 사용하는 DBMS입니다.
즉, 데이터 베이스라고 합니다.
python에서 DB 즉, 데이터 베이스를 다루기 위해서는 ORM(Object Relation Mapper)라는 것을 사용하게 됩니다. ORM은 객체와 관계를 매핑해주는 프로그램이라 생각하면 됩니다. ORM 중에서 python에서는 SQLAlchemy를 사용합니다.
파일 구조를 다음과 같이 Setting했습니다.
app이라는 폴더에 database.py와 main.py, schemas.py, models.py 4개의 python 스크립트 파일들로 구성되어져 있습니다.
app
├── database.py
├── main.py
├── schemas.py
└── models.py
각 .py 파일에 작성할 대략적인 내용들은 다음과 같습니다.
- main.py : api와 관련된 내용들이 작성될 예정입니다.
- database.py : SQLAlchemy에 대해서 작성할 예정입니다.
- models.py : SQLAlchemy의 model들이 작성될 예정입니다.
- schemas.py : pydantic 모델들을 정의할 것입니다.
우선 먼저 해야될 것은 DB를 만드는 것입니다 !!
다음과 같이 docker 명령어를 사용해서 Database를 생성합니다.
docker run -d --name sqldb \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=1234 \
-e MYSQL_DATABASE=dev \
-e MYSQL_USER=admin \
-e MYSQL_PASSWORD=1234 \
mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
우분투에서 docker를 설치하는 방법은 다음과 같습니다 !!
docker가 설치되어져 있지 않다면 아래 명령어들로 docker를 설치 한후에 위에 명령어로 database를 만들어 주면됩니다.
# 우분투 docker 설치
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
이후, 아래 명령어를 입력하면 해당 docker가 잘 만들어 졌는지 확인 할 수 있습니다.
sudo docker ps -a
추가적으로 설치가 필요한 library가 있는데 다음과 같이 명령어를 입력해서 설치하면 됩니다.
$ pip install PyMySQL
해당 library는 MySQL과 python을 연결시켜 주는 역할을 한다고 생가하시면 됩니다 !!
다음 내용은 다음에 글에 포스팅 하겠습니다.
'FastAPI' 카테고리의 다른 글
RDB 연동 - 3 (0) | 2024.02.02 |
---|---|
RDB 연동 - 2 (0) | 2024.01.30 |
헤더, 쿠키 매개변수 (3) | 2024.01.29 |
FastAPI 데이터 검증 (1) | 2024.01.25 |
응답모델 - 2 (0) | 2024.01.21 |