javaboiii의 Error | Exception

Error - 500 Internal Server Error

javaboiii 2025. 3. 9. 00:01

 

로그

더보기

❌ 데이터베이스 오류 발생: 
Textual SQL expression 'SELECT id, question, expl...' should be expllared as text('SELECT id, question, expl...')

서버오류

데이터 베이스 쿼리 실행에서 문제발생

SQLAlchemy에서 발생하는 오류

db.execute()를 사용할 때 SQLAlchemy의 텍스트 표현식을 명시 적으로 지정해야 하는 경우

(SQL문이 일반 문자열로 처리돼 문제가 발생할 수 있음)

 

기존 코드

@router.get("/quiz")
def get_quiz_data(user: dict = Depends(get_current_user), db: Session = Depends(get_db)):
    """
    JWT 토큰을 검증한 후, 데이터베이스에서 퀴즈 목록을 가져옴.
    """
    if not user:
        raise HTTPException(status_code=401, detail="로그인이 필요한 서비스입니다.")

    try:
        quizzes = db.execute("SELECT id, question, explanation, answer FROM quizzes").fetchall()
        quiz_list = [{"id": q[0], "question": q[1], "explanation": q[2], "answer": q[3]} for q in quizzes]

        return {"message": "퀴즈 데이터 조회 성공", "data": quiz_list}

    except Exception as e:
        print(f"❌ 데이터베이스 오류 발생: {str(e)}")
        raise HTTPException(status_code=500, detail=f"데이터베이스 오류: {str(e)}")

 

 

수정 코드

@router.get("/quiz")
def get_quiz_data(user: dict = Depends(get_current_user), db: Session = Depends(get_db)):
    """
    JWT 토큰을 검증한 후, 데이터베이스에서 퀴즈 목록을 가져옴.
    """
    if not user:
        raise HTTPException(status_code=401, detail="로그인이 필요한 서비스입니다.")

    try:
        quizzes = db.execute(text("SELECT id, question, explanation, answer FROM quizzes")).fetchall()
        quiz_list = [{"id": q[0], "question": q[1], "explanation": q[2], "answer": q[3]} for q in quizzes]

        return {"message": "퀴즈 데이터 조회 성공", "data": quiz_list}

    except Exception as e:
        print(f"❌ 데이터베이스 오류 발생: {str(e)}")
        raise HTTPException(status_code=500, detail=f"데이터베이스 오류: {str(e)}")