53 lines
1.6 KiB
Python
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
|
|
} |