AI 세부 실습 06 - Streamlit 파일 업로드, 탭, 사이드바, DB 저장

1 분 소요

Streamlit 파일 업로드, 탭, 사이드바, DB 저장

이 글은 다음 원본 실습 파일을 기준으로 정리합니다.

15_streamlit_20250416_01_file.py
15_streamlit_20250416_02_tab.py
15_streamlit_20250416_03_sidebar.py
15_streamlit_20250416_04_sidebar.py
16_streamlit_20250417_01_file_upload.py
16_streamlit_20250417_02.py
16_streamlit_20250417_03.py
16_streamlit_20250417_04_pandas.py
16_streamlit_20250417_05.py
16_streamlit_20250417_06_routing.py
16_streamlit_20250417_07_img_db.py

15-16번 실습은 Streamlit 앱을 실제 서비스에 가깝게 만드는 내용입니다.

파일 업로드

AI 앱에서 파일 업로드는 매우 중요합니다.

uploaded_file = st.file_uploader("파일을 선택하세요")

if uploaded_file is not None:
    st.write(uploaded_file.name)
    st.write(uploaded_file.type)

업로드된 파일은 다음 작업에 사용할 수 있습니다.

  • PDF 요약
  • 이미지 설명
  • CSV 분석
  • 음성 텍스트 변환

탭은 한 화면에서 여러 기능을 나눌 때 좋습니다.

tab1, tab2 = st.tabs(["입력", "결과"])

with tab1:
    st.write("입력 화면")

with tab2:
    st.write("결과 화면")

AI 앱에서는 질문, 검색 결과, 원문, 설정 같은 영역을 탭으로 나눌 수 있습니다.

사이드바

사이드바는 설정값을 배치하기 좋습니다.

model = st.sidebar.selectbox("모델", ["gpt-3.5-turbo", "gpt-4"])
temperature = st.sidebar.slider("창의성", 0.0, 1.0, 0.3)

사용자는 메인 화면을 보면서 왼쪽에서 모델이나 옵션을 바꿀 수 있습니다.

SQLite 저장

16_streamlit_20250417_03.py는 입력값을 SQLite에 저장합니다.

import sqlite3

conn = sqlite3.connect("test.db")

def insert_data(name, age, birth):
    sql = "insert into student(name, age, birth) values(?, ?, ?)"
    cur = conn.cursor()
    cur.execute(sql, (name, age, birth))
    conn.commit()
    return "추가성공"

사용자가 입력한 값을 DB에 저장하면 앱을 껐다 켜도 데이터가 남습니다.

SQL에서 ?를 쓰는 이유

다음처럼 문자열을 직접 붙이면 위험합니다.

sql = f"insert into student values('{name}', {age}, '{birth}')"

사용자 입력에 SQL 문법이 섞이면 의도하지 않은 쿼리가 실행될 수 있습니다. 그래서 ?를 사용해 값을 안전하게 전달합니다.

cur.execute(sql, (name, age, birth))

이미지와 DB 연결

16_streamlit_20250417_07_img_db.py는 이미지와 DB 저장 흐름과 연결됩니다.

예를 들어 다음 구조를 만들 수 있습니다.

이미지 업로드
-> 파일 저장
-> 파일 경로를 DB에 저장
-> 화면에서 이미지 목록 조회

이미지 자체를 DB에 넣는 방식도 있지만, 초보 단계에서는 파일은 폴더에 저장하고 DB에는 경로만 저장하는 방식이 이해하기 쉽습니다.

정리

15-16번 실습은 Streamlit 앱을 실제 사용 가능한 도구로 확장하는 과정입니다. 파일 업로드, 탭, 사이드바, DB 저장을 익히면 AI 챗봇이나 문서 분석 앱의 기본 구조를 만들 수 있습니다.

댓글남기기