FastAPI - DB 연동
2023. 7. 31. 09:42ㆍ개발/Python
728x90
반응형
설치
필수 설치 요소
- sqlalchemy 설치 (docs)
pip3 install sqlalchemy # ORM을 통해 DB 쿼리문을 작성하기
pip3 install python-dotenv # DB관련 정보 입력시 환경변수 등록을 위한 설치
웹서버 구조
└── app
├── __init__.py
├── apis
│ ├── __init__.py
│ └── test.py
├── core
│ ├── __init__.py
│ └── config.py
├── crud
│ ├── __init__.py
│ └── crud_test.py
├── db
│ ├── __init__.py
│ ├── connection.py
│ ├── models
│ │ ├── __init__.py
│ │ └── test_model.py
│ └── session.py
├── main.py
└── routes
├── __init__.py
└── test.py
- apis : 메인 로직을 작성하는 부분 (MVC 패턴의 Controller와 같은 역할)
- core : core의 config.py에는 DB URL을 반환하는 클래스가 포함되어 있다.
- crud : ORM 형식으로 DB 쿼리문이 작성된 파일들이 모여있는 폴더
- db : DB 연결, DB 세션 관리, 모델들의 정의한 폴더
- routes : URL 경로에 따라 API 함수들을 나눠주는 역할
- main.py : FastAPI를 샐행하고 routes 폴더들의 다른 라우트들을 불러와 포함시키는 역할
- init.py : 해당 폴더가 패키지의 일부라는 것을 나타낸다. python 3.3버전 이후부터는 없어도 되지만 이전 버전은 필수 존재해야한다.
PyODBC
- python36-devel 패키지 설치
sudo yum install python36-devel
참고
- mysql은 https://phsun102.tistory.com/63?category=891189 참고 하였고 Session 으로 데이터를 관리
- pyodbc는 dao를 만들어서 session을 사용하지 않고 직접연결하였다.
- sqlalchemy를 사용하지 않았다.
- Session을 쓰지 않는것이 비정상인지는 글쓴이는 판단하기 어렵다.
- 구조도 변경
└── app
├── __init__.py
├── apis
│ ├── __init__.py
│ └── test.py
├── core
│ ├── __init__.py
│ └── config.py
├── crud
│ ├── __init__.py
│ └── crud_test.py
├── db
│ ├── __init__.py
│ └── dao.py
├── main.py
└── routes
├── __init__.py
└── test.py
테스트
- 상품 정보의 수량을 출력하는 테스트를 진행
💡 출처 : https://phsun102.tistory.com/62?category=891189,(https://phsun102.tistory.com/63?category=891189) https://ulfrid.github.io/python/python-sqlalchemy/,
https://docs.sqlalchemy.org/en/14/core/type_basics.html
728x90
반응형
'개발 > Python' 카테고리의 다른 글
Python - Puppeteer vs Selenium vs Playwright (0) | 2023.08.01 |
---|---|
FastAPI - Redis 연동 (0) | 2023.07.31 |
FastAPI - 설치 (0) | 2023.07.31 |
Python - Uvicorn (0) | 2023.07.31 |
Python - FastAPI (0) | 2023.07.31 |