FastAPI,返回带有 sql 查询输出的文件响应

2024-04-12

我正在使用 FastAPI,目前我返回一个 csv,这是我用 pandas 从 SQL Server 读取的。 (pd.read_sql()) 然而,csv 对于浏览器来说相当大,我想用文件响应返回它:https://fastapi.tiangolo.com/advanced/custom-response/ https://fastapi.tiangolo.com/advanced/custom-response/(本页末尾)。 如果不先将其写入 csv 文件,我似乎无法做到这一点,这看起来很慢,并且会在每个请求上用 csv 弄乱文件系统。

所以我的问题是,有没有办法从 sql 数据库或 pandas 数据帧返回 FileResponse。

如果没有,有没有办法在客户端读取完生成的 csv 文件后将其删除?

感谢您的帮助!

亲切的问候,

Stephan


很大程度上基于此https://github.com/tiangolo/fastapi/issues/1277 https://github.com/tiangolo/fastapi/issues/1277

  1. 将数据帧转换为流
  2. 使用流响应
  3. 修改标题以便下载(可选)
from fastapi import FastAPI
from fastapi.responses import StreamingResponse
import io
import pandas as pd

app = FastAPI()

@app.get("/get_csv")
async def get_csv():
    df = pd.DataFrame(dict(col1 = 1, col2 = 2), index=[0])
    stream = io.StringIO()
    df.to_csv(stream, index = False)
    response = StreamingResponse(iter([stream.getvalue()]),
                                 media_type="text/csv"
                                )
    response.headers["Content-Disposition"] = "attachment; filename=export.csv"
    return response
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FastAPI,返回带有 sql 查询输出的文件响应 的相关文章

随机推荐

  • 方案:为什么内部定义比外部定义快?

    我尝试运行下面的程序 define odd internal x define even x if zero x t odd internal sub1 x if zero x f even sub1 x define odd extern
  • printf 类型提升和符号扩展

    我对 printf 和一般情况下类型提升如何发生感到困惑 我尝试了以下代码 unsigned char uc 255 signed char sc 128 printf unsigned char value d n uc printf s
  • 从 {AER} 的 ivreg() 获取第一阶段结果

    有没有办法从中提取第一阶段的结果ivreg 我想看看在不运行单独回归的情况下计算结果如何 这里有一些代码 其中包括 IV 以及我如何手动估计第一阶段以及通过进入第二阶段进行双重检查 library AER y lt rnorm 100 5
  • 反向传播实现问题

    我应该做什么 我有一个黑白图像 100x100px 我应该训练一个反向传播 http en wikipedia org wiki Backpropagation神经网络与该图像 输入是图像的 x y 坐标 从 0 到 99 输出是 1 白色
  • 使用tensorflow-gpu获得可重现的结果

    使用 Tensorflow 处理项目 但是 我似乎无法重现我的结果 我尝试过设置图形级别种子 numpy 随机种子甚至操作级别种子 然而 它仍然无法重现 在 Google 搜索中 大多数人都将罪魁祸首归咎于 reduce sum 函数 因为
  • AS3:将变量转换为动态类型

    是否可以动态地将变量转换为类型 其中类型将是类型的变量Class 考虑以下因素 无效 var myClass Class MyClass var myInstance myClass new myClass 对于上下文 我正在 Flex 4
  • 使用 Swift 以编程方式闪烁屏幕(在“屏幕截图”上)

    为了从这里转换 Objective C 示例 如何以编程方式闪烁屏幕 https stackoverflow com questions 5254508 how to flash screen programmatically我写了以下代码
  • 撤消核心数据更改的操作名称

    我正在寻找一种内置 或易于实现 的方法来让核心数据撤消 重做操作名称读起来像 撤消编辑名字 而不是像它们那样简单地 撤消 或 重做 默认情况下 我有一个核心数据应用程序 并且正在使用它NSUndoManager作为我的 Windows 撤消
  • Spring RedisTemplate:8次调用后方法键挂起

    我使用 Spring RedisTemplate spring data redis 1 7 1 与 Redis 进行通信 我需要通过正则表达式获取然后删除键 例如 context user1 我用的方法 RedisTemplate key
  • Dagger - 在不同组件上获取相同实例

    我遇到了类似的问题this https stackoverflow com questions 40745279 dagger 2 provide same instance between multiple component with
  • 如何用UML表示通信协议?

    在我的 UML 模型中 我有一个系统及其相互通信的子组件 例如 我有一台计算机和一个遥控机器人 它们通过蓝牙进行通信 目前图中的流程类似于 计算机 触发 遥控车 的 setVelocity 函数 在这一点上 我想通过说以下的话来完善沟通 计
  • 使用 Powershell 在单独的单独行上列出完全路径文件名?

    如果我执行 Get ChildItem ext recurse 输出由一系列目录部分组成 后跟由所述目录部分分隔的每个匹配文件的一列或多列信息 有类似 Unix find 命令的东西吗 其中每个匹配的文件名及其完整的相对路径都出现在一行中
  • 原生 JavaScript 中的 jQuery.getScript 替代方案

    我正在尝试动态加载 JS 脚本 但不能使用 jQuery 我检查了 jQuery 源代码以了解如何获取脚本 http api jquery com jQuery getScript 已实现 以便我可以使用该方法使用本机 JS 加载脚本 但是
  • Silverlight 绑定到 TranslateX

    我有一个简单的 winphone7 应用程序 但我认为这适用于任何 silverlight 基本上我有一个椭圆 我想用平移 X 和 Y 属性来移动它 这是我的尝试
  • 在.net winform中创建圆角容器

    我想在 winform net 中创建圆角容器 我的目标是创建一个容器 这样如果我将任何其他控件放入其中 该控件也将变成圆形 这可能吗 您正在寻找Control Region财产 http msdn microsoft com en us
  • PDF 可以在 Chrome 中呈现,但不能在 Acrobat 中呈现

    PDF 1 7 4 0 obj lt ObjStm N 3 First 14 Length 139 gt gt stream 1 0 2 41 3 76 lt Catalog Version 1 7 Pages 2 0 R gt gt lt
  • Vs2017:查找资源字典时出错

    当我尝试引用我的 app xaml 文件的资源字典时 出现以下错误
  • 使用 Promise 时保留变量的最佳实践[重复]

    这个问题在这里已经有答案了 我是 Promises 的新手 我想知道在沿着链向下的同时保留变量的最佳实践是什么 通过 Promise 连接到 MongoDB 非常简单 connectToMongoDB data done function
  • 奇数耙数据库:迁移输出

    为什么rake db migrate run Execute db schema dump我的输出全部搞砸了 显示 SQL 看起来像这样 ActiveRecord SchemaMigration Load 0 5ms SELECT sche
  • FastAPI,返回带有 sql 查询输出的文件响应

    我正在使用 FastAPI 目前我返回一个 csv 这是我用 pandas 从 SQL Server 读取的 pd read sql 然而 csv 对于浏览器来说相当大 我想用文件响应返回它 https fastapi tiangolo c