在fastapi將dataframe資料轉成csv response
2023/09/14
範例
from fastapi import APIRouter
from fastapi.responses import StreamingResponse
from pandas import DataFrame
from io import StringIO
router = APIRouter(prefix='/download')
@router.get(
"/demo",
description="demo"
)
def download_demo():
data = [
{"name": "John", "city": "New,York"},
{"name": "Mike", "city": "Los Angeles"},
]
df = DataFrame(data)
df = df.rename(columns={
'name': '姓名',
'city': '居住地',
})
csv_string = df.to_csv(index=False)
csv_io = StringIO(csv_string)
return StreamingResponse(
content=csv_io,
media_type="text/csv",
headers={
"Content-Disposition": "attachment; filename=demo.csv",
}
)