강의

멘토링

커뮤니티

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

작성자 없음

작성자 정보가 삭제된 글입니다.

[매일 완독 챌린지] 저자와 함께하는 <FastAPI로 기획에서 출시까지>

5장 : 데이터베이스 연결과 마이그레이션하기 (p135~p157)

페이지 144 코드 문의

해결된 질문

작성

·

34

0

def create_engine(dsn: str):
    return create_async_engine(
        dsn,
        echo=True,          # SQLAlchemy가 실행하는 SQL을 콘솔에 출력하도록 함
    )


def create_session(async_engine: AsyncEngine | None = None):
    if async_engine is None:
        async_engine = create_engine()

위 코드중 마지막줄

async_engine = create_engine() 

여기에 dsn 인자가 없어서 오류 나지 않나요?

 

답변 3

0

한날님의 프로필 이미지
한날
지식공유자

앗, 누락되었다면 말씀하신대로 dsn이 들어가야 합니다. 어느 부분에서 누락되었는지 알려주시면 반영하겠습니다.

0

혹시나 해서 책의 다음 내용을 살펴보니

 

dsn 관련 설정하는게 나오네요

0

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

질문하신 코드에서 create_engine() 함수가 dsn 매개변수를 필요로 하기 때문에, create_engine() 을 호출할 때 반드시 dsn 인자를 제공해야 합니다. 만약 dsn 인자가 전달되지 않으면 Python에서 TypeError 가 발생할 것입니다. 이는, 필수 인자가 누락되었다는 오류입니다.

따라서 create_session() 함수의 async_engine = create_engine() 줄에 dsn 값을 입력해야 합니다. 예를 들어, dsn 값을 변수로 이미 정의해 두었다면, create_engine(dsn) 이렇게 호출해야 올바른 동작을 기대할 수 있습니다.

다음과 같은 방식으로 코드를 수정해 보세요:

def create_session(async_engine: AsyncEngine | None = None, dsn: str):
    if async_engine is None:
        async_engine = create_engine(dsn)

이 코드는 실행 시 항상 dsn 값을 필요로 하기 때문에 함수 호출 시 데이터베이스 연결 문자열을 전달해야 합니다. 이를 통해 호출 시점에 구체적인 연결 정보를 항상 보장할 수 있습니다.

관련된 더 자세한 설명이나 다른 질문이 있으시면 아래의 링크를 참조하시면 좋겠습니다:
- FastAPI 데이터베이스 엔진 설정 및 사용 정리 – Inflearn 기존 질문

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

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기