cockpit/Router/InfoRouter.py

53 lines
1.6 KiB
Python

import math
import pandas as pd
from fastapi import APIRouter, UploadFile, File, Depends, HTTPException
from sqlalchemy.orm import Session
from Crud import InfoCrud
from Schemas import InfoSchemas
from Utils.SqlAlchemyUtils import get_db
router = APIRouter(
tags=["资讯数据"],
prefix="/api/info",
)
@router.post("/information_data_sheet/upload", summary='资讯录入', description='录入资讯数据')
def func(file: UploadFile = File(...), db: Session = Depends(get_db)):
# 使用 Pandas 读取 Excel 文件
df = pd.read_csv(file.file)
for index, row in df.iterrows():
insert = {
"title": row[0],
"link": row[1],
"post_time": row[2],
"source": row[3],
"type": row[4]
}
for key, val in insert.items():
if isinstance(insert.get(key), str):
continue
elif insert.get(key) is None:
continue
elif math.isnan(insert.get(key)):
insert[key] = None
InfoCrud.insert_data(db, insert)
return {
"code": 200,
"message": "录入成功",
"content": {}
}
@router.post("/query_by_type", summary='资讯查询', description='查询资讯数据')
def func(schema: InfoSchemas.QueryInfoByType, db: Session = Depends(get_db)):
result = InfoCrud.query_data_by_type(db, schema)
if not result:
raise HTTPException(status_code=404, detail="部门不存在")
return {
"code": 200,
"message": "查询成功",
"content": result
}