728x90
fastapi 엑셀 파일 불러와서 뿌려주기 #4 - 검색
이제 단어 검색을 통해서 검색어에 해당하는 데이터만 보여주는 기능을 추가해봅니다.
문자열 검색의 경우에는 Series.str.contains 와 DataFrame.apply를 사용합니다.
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.contains.html
pandas.Series.str.contains — pandas 2.2.1 documentation
Fill value for missing values. The default depends on dtype of the array. For object-dtype, numpy.nan is used. For StringDtype, pandas.NA is used.
pandas.pydata.org
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.apply.html
"""
main.py
@제목: 메인 실행 파일
@설명: 메인 실행 파일
작성일자 작성자
-----------------------
2024.03.14 hiio420
"""
import math
from fastapi import FastAPI
from pydantic import BaseModel
from libs import ExcelUtils
# 엑셀 파일 불러오기
file_path = "F:\\[01]project\\commonStandardTerm\\upload\\(붙임)공공데이터 공통표준용어(2022.7월).xlsx"
excel_utils = ExcelUtils()
df_dict = excel_utils.read_excel(file_path)
app = FastAPI()
class Item(BaseModel):
data_id: int = 0
page: int = 1
limit: int = 10
@app.get("/")
def read_root(data_id: int = 0, page: int = 1, limit: int = 10,srch_txt=""):
if page < 1:
page = 0
if limit < 10:
limit = 10
df = df_dict[data_id]
df = df[df.apply(lambda row: row.astype(str).str.contains(srch_txt, case=False).any(), axis=1)]
first_idx = (page - 1) * limit
last_idx = first_idx + limit - 1
total_size = df.shape[0]
first_page = 1
last_page = math.ceil(total_size / limit)
df_sliced = df[first_idx:last_idx + 1].copy()
df_sliced["번호"] = [i for i in
range(total_size - (page - 1) * limit, total_size - (page - 1) * limit - df_sliced.shape[0], -1)]
data = []
if df_sliced.shape[0] != 0:
data = df_sliced.to_dict("records")
return {"sheetName": excel_utils.sheet_names[data_id], "data_id": data_id, "page": page, "limit": limit,
"first_page": first_page, "last_page": last_page, "firstIdx": first_idx, "lastIdx": last_idx,
"totalSize": total_size,
"data": data}
728x90
'project > 공공데이터 공통표준용어 검색' 카테고리의 다른 글
[Project] 공공데이터 공통표준용어 검색 만들기 - 화면 만들어보기 #2 기본 화면 그려보기 (0) | 2024.03.25 |
---|---|
[Project] 공공데이터 공통표준용어 검색 만들기 - 화면 만들어보기 #1 WebStorm NextJs 설정 (0) | 2024.03.25 |
[Project] 공공데이터 공통표준용어 검색 만들기 - fastapi 엑셀 파일 불러와서 뿌려주기 #2 (0) | 2024.03.14 |
[Project] 공공데이터 공통표준용어 검색 만들기 - 개발환경 구성[백엔드] (0) | 2024.03.13 |
[Project] 공공데이터 공통표준용어 검색 만들기 - Intro (0) | 2024.03.13 |