Inflearn brand logo image

인프런 커뮤니티 질문&답변

하늘111님의 프로필 이미지
하늘111

작성한 질문수

FastAPI 완벽 가이드

FastAPI의 Dependency Injection 이해

db connect

작성

·

87

0

안녕하세요! 강사님!

처음으로 fastAPI를 접하는데 강사님 수업을 통해 배움을 얻어 가게되어 우선 감사 말씀드립니다.

 

DB Connect 세팅 시

create_engine 함수를 이용하여 엔진 객체만 생성하여 DB에 연결을 하는데 다른 참고 자료들과 비교하면 모델 클래스 생성은 ORM을 사용하지 않으니 생성을 할필요가 없을테고, sessionmaker 함수를 통한 세션 클래스는 따로 생성하지 않더군요.

혹시 sessionmake를 통해 생성된 세션 클래스의 역할과 지금 강의에서는 사용하지 않은 이유를 알 수 있을까요?

답변 2

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

요즘 업무가 많이 밀려서 답변이 좀 늦었습니다. 잘 듣고 계시다니, 저도 기쁘군요.

아래의 인프런 AI 인턴 답변에서도 확인하실 수 있지만, ORM을 사용할 경우에는 SQL을 포함한 DB Connection 호출하는 연관 코드를 감춰버리기 때문에 파이썬 객체와 DB 간의 Connection이 매핑되어 이러한 역할을 수행할 수 있는 기능이 필요한데 이러한 역할을 Session 객체가 수행합니다.

예를 들어 session.add(user) 하게 되면 user 객체의 정보를 매핑된 User Table에 insert 하는 쿼리를 생성하고 수행하게 됩니다. session.commit()하게 되면 transaction을 commit하여 DB에 기록되게 합니다.

Session은 ORM을 사용할 때 이용되므로 sessionmaker 역시 ORM 사용 시에만 활용됩니다. 본 강의에서는 ORM을 사용하지 않으므로 sessionmaker가 필요하지 않습니다.

감사합니다.

하늘111님의 프로필 이미지
하늘111
질문자

ORM 사용 시 필요한 절차였군요, 답변 감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다. 하늘111님.

FastAPI 강의에서 create_engine 함수를 사용하여 DB 엔진 객체를 생성하시는 방법을 학습하고 계시는군요! 일반적으로 SQLAlchemy ORM을 사용할 때, sessionmaker는 데이터베이스와의 상호작용을 관리하는 세션 객체를 생성하는데 사용됩니다.

sessionmaker를 통해 생성된 세션 클래스는 데이터베이스 트랜잭션 범위를 설정하고, ORM 객체의 데이터베이스 CRUD (Create, Read, Update, Delete) 연산을 수행하는 역할을 합니다. 이는 데이터베이스와의 연결을 관리하고 동작을 취소하거나 커밋할 수 있는 기능을 제공합니다.

그러나 강사님의 강의에서는 ORM을 사용하지 않고 직접 쿼리를 실행하거나 간단하게 데이터베이스와 연결하여 작업하는 방식을 택할 수 있습니다. 이러한 접근 방식의 목적은 더 간결한 코드와 특정 요구사항에 대한 최적화를 위해서일 수 있습니다.

아래는 관련된 질문과 답변이 있는 링크입니다. 참조해보시면 하늘111님의 이해에 더 도움이 되실 것 같습니다.
- FastAPI와 SQLAlchemy를 사용한 데이터베이스 연결 방법

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

하늘111님의 프로필 이미지
하늘111

작성한 질문수

질문하기