如何解决下载 Excel 格式的数据库
我正在创建一个应用程序,其中有一个用于下载数据库的按钮。我在后面使用 FastAPI 和 MongoDB。
filtered_db = db.collection.find(base_query)
docs = []
async for doc in docs:
docs.append(Document(**doc).dict())
df = pd.DataFrame(docs)
return Response(content=df,media_type="text/csv")
这是我的代码示例,过滤 MongoDB 中的数据库,然后使用模型并将其转换为数据帧。但这不起作用,你能帮我吗?
我有错误:"AttributeError: 'DataFrame' object has no attribute 'encode'"
解决方法
首先,如果您尝试将检索到的 filtered_db
数据附加到 docs
列表。您正在阅读一个空列表 docs
应该是
filtered_db = db.collection.find(base_query)
docs = []
async for doc in filtered_db:
如果您尝试将数据导出到 .csv
文件,则可以使用 DataFrame.to_csv 函数
return df.to_csv('output.csv')
如果您希望 API 在响应中显示 .csv
文件,您可以这样做
return Response(content=df.to_csv(),media_type="text/csv")
顺便说一下,这里有一个完整的 FastAPI 示例
from fastapi import FastAPI,Response
from pydantic import BaseModel
import pandas as pd
app = FastAPI()
class Document(BaseModel):
id: int
column1: str
column2: str
filtered_db = [
{"id": "1","column1": "c1-value1","column2": "c2-value1"},{"id": "2","column1": "c1-value2","column2": "c2-value2"}
]
async def read_data(data: list):
docs = []
for doc in data:
docs.append(Document(**doc).dict())
df = pd.DataFrame(data=docs)
return df
@app.get("/xlsx")
async def get_excel():
df = await read_data(filtered_db)
# export data to csv
# df.to_csv('output.csv')
return Response(content=df.to_csv(),media_type="text/csv")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。