프로젝트/[머니버디] 카드상품 추천 챗봇(finchatbot)

[머니버디] 예산 및 소비 그래프 오류 수정

hyunh404 2023. 12. 3. 17:49
728x90

Pandas를 이용하여 원그래프를 만들어 예산과 소비금액을 비교하여 보여주고, 데이터베이스에서 예산과 소비금액을 받아와 화면에 보여주는 화면을 구현하던 중 로그인 정보에 맞지 않는 데이터들이 페이지에 보여지는 것을 발견하였다.

 

따라서 함수를 수정해 로그인정보에 맞는 데이터만 가져오도록 수정해보려한다.

 

먼저 기존의 코드를 올려두겠다.

 

def budget_data():
    conn = connectsql()
    cursor = conn.cursor()
   
    budget_query = "SELECT budget FROM budget;"
    cursor.execute(budget_query)
    budget_tuple = cursor.fetchone()
    Budget = budget_tuple[0] if budget_tuple else 0
   
    df=graph1.load_data()
    Spent=graph1.calculate_current_month_total_expense(df)


    # 예산 사용률 계산
    budget_percentage = (Spent / Budget) * 100 if Budget > 0 else 0

    return Budget, Spent, budget_percentage
   
    cursor.close()
    conn.close()

 

 

위의 코드에서 세션에 저장된 로그인 정보가 구분되고 있지 않다는 것을 확인하였으며, 세션 또한 불러오지 않고 있다는 것을 알게되었다.

 

그렇기때문에 아래의 코드에서 튜플에 저장된 0번째 데이터만 가져오게 되면서 로그인 정보와는 맞지 않는 데이터가 페이지에 나타나게 된 것이다.

 

Budget = budget_tuple[0] if budget_tuple else 0

 

________________________________________________________________________________________________

 

따라서 로그인 세션 정보를 불러오고, 세션에 저장된 로그인 정보와 데이터베이스를 비교하여 필터링 해준 후 데이터를 가져와보겠다.

if문을 사용하여 로그인 세션 정보를 가져오고 SQL쿼리를 사용해 로그인 정보를 비교해 주겠다.

아래의 코드에서 확인해볼 수 있다. 이 코드를 사용하여 기존의 코드를 수정할 것이다.

 

if 'username' in session:
        username = session['username']

 

query = "SELECT budget FROM budget WHERE username = %s"

 

 

최종적으로 기존에 정의한 함수에 수정한 퀴리를 넣어주면 로그인 세션에 저장한 username정보를 가져와 데이터베이스의 budget테이블에 있는 username을 비교하여 해당하는 데이터만을 가져올 수 있게 된다.

아래의 코드가 수정된 코드이다.

 

def budget_data():
    if 'username' in session:
        username = session['username']  # 세션에서 사용자 이름을 가져옴
        conn = connectsql()
        cursor = conn.cursor()
        query = "SELECT budget FROM budget WHERE username = %s"
        cursor.execute(query, (username,))
        budget = cursor.fetchone()
        cursor.close()
        conn.close()
        Budget = budget[0] if budget else 0
   
    df=graph1.load_data()
    Spent=graph1.calculate_current_month_total_expense(df)


    # 예산 사용률 계산
    budget_percentage = (Spent / Budget) * 100 if Budget > 0 else 0

    return Budget, Spent, budget_percentage
   
    cursor.close()
    conn.close()

 

 

결과적으로 튜플을 불러오는 형식은 그대로 사용해주었으나 로그인 정보를 비교해 필터링 해줌으로써 정확한 로그인 정보와 해당하는 데이터를 찾고 사용자에게 보여줄 수 있게 되었다.

728x90