티스토리 뷰
- 의존성 주입이란?
- 외부에서 객체를 주입하여 사용하는 방식
- Depends
- 지정된 함수를 호출하고 반환값을 엔드포인트 함수에 전달
- 엔드포인트 함수란?
- 클라이언트(브라우저) 특정 url로 요청을 보낼때 실행되는 함수
- @app.get(”/users/)는 GET요청을 처리하는 엔드포인트를 정의, /users/는 클라이언트가 요청을 보낼 url
- yield
<작동 순서># main.py from fastapi import FastAPI, Depends from sqlalchemy.orm import Session from db import get_db # 의존성 주입 함수 app = FastAPI() @app.get("/users/") def read_users(db: Session = Depends(get_db)): # 엔드포인트 함수 # 데이터베이스에서 모든 사용자 가져오기 users = db.query(User).all() return users
- 클라이언트가 /users/ 경로로 get요청을 보냄
- read_users 함수(엔드포인트 함수) 실행
- Depends를 통해 get_db함수 호출
- get_db 함후 실행, db 객체를 반환하고 대기
- users 생성 후 반환 (return)
- get_db의 finally 부분 실행: db.close()
- Session은 type이고 변수는 db
- # db.py def get_db(): db = SessionLocal() # 데이터베이스 세션 생성 try: yield db # 세션 객체를 반환하고 대기 finally: db.close() # 작업이 끝난 후 세션을 닫음
- SessionLocal(세션 팩토리)
- DB와 상호작용하는데 필요한 세션 객체를 생성
- SQLAlchemy를 사용해 세션관리할 경우 생성
- sessionmaker로 생성
from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker DATABASE_URL = "mysql+pymysql://username:password@localhost/db_name" # 데이터베이스 엔진 생성 engine = create_engine(DATABASE_URL) # 세션 팩토리 생성 SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
- autocommit=False : 커밋을 명시적으로 수행해 일관성 보장
- 세션 객체
- DB와의 상태를 유지하고 관리하는 도구
- DB 연결 관리
- DB와 python 객체간의 상태 변화 추적
- 새로 추가된 객체, 수정된 객체, 삭제된 객체
- 트랜잭션 관리
- 트랜잭션의 시작과 종료를 관리
- 커밋이나 롤백을 통해 명시적으로 종료
- 객체 캐싱
- 한 번 조회한 데이터를 캐싱하여 동일한 데이터에 대한 추가쿼리 방지
- 데이터가 세션에 있을 경우 DB를 다시 조회하지 않음
- 세션팩토리를 통해 생성됨
- 세션 객체의 주요 메서드
- add 새 객체를 세션에 추가
- add_all 여러 객체를 세션에 추가
- query DB에서 데이터 조회
- commit 현재 트랜잭션을 커밋(저장)
- rollback 트랜잭션을 롤백(취소)
- flush 세션의 변경사항을 db에 반영하지만 커밋X
- close 세션 닫기
- delete 특정 객체 삭제
반응형
'AI > MLOps' 카테고리의 다른 글
[MLOps] Thread, I/O 바운드, BMT, 웹소켓 (0) | 2025.01.21 |
---|---|
[MLOps] AWS lambda, API Gateway, S3, ECR, EC2, ECS (0) | 2025.01.18 |
[MLOps] Docker 컨테이너와 이미지 (0) | 2025.01.09 |
[MLOps] Docker Compose backend 연결 안됨 문제 해결 (0) | 2025.01.09 |
[MLOps] Docker 이미지 무료로 호스팅하기 (0) | 2024.12.13 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- opic
- 티스토리챌린지
- 빅데이터 분석기사
- 갓생
- 아침
- 다이어트
- 운동
- 루틴
- 프로그래머스
- IH
- 뉴스
- SQL
- 30분
- C언어
- ChatGPT
- 오픽
- 고득점 Kit
- 기초
- 미라클모닝
- 스크랩
- Ai
- 오블완
- Python
- 실기
- llm
- 경제
- 습관
- 아침운동
- 영어회화
- 줄넘기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함