我一直在学习一些API.我在documentation中看到了这个片段:

def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()

我不知道为什么需要.这个函数与fast api的Depends个功能一起使用,一切都很正常.然而,如果我想写一个测试并使用db,那么我需要做next(get_db())来获得值.我想我也可以跑SessionLocal(),但我很好奇.

推荐答案

https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-with-yield/.

这是Depends '方式允许你做一些post-processing当依赖被丢弃时,如关闭数据库连接.依赖项是一个简单的可调用函数,它返回依赖项.那么,应该用什么机制来向这个可调用的信号来通知依赖性应该被"清理"呢?它使用Python的生成器机制,特别是finally块,使您能够添加一些清理代码.

你可能不应该自己直接使用get_db,而只能使用Depends.在这种情况下,直接使用SessionLocal()来获取原始数据库连接.

Python相关问答推荐

Pandas 第二小值有条件

使用FASTCGI在IIS上运行Django频道

点到面的Y距离

Odoo 14 hr. emergency.public内的二进制字段

滚动和,句号来自Pandas列

如何在Python数据框架中加速序列的符号化

将tdqm与cx.Oracle查询集成

启用/禁用shiny 的自动重新加载

Pandas GroupBy可以分成两个盒子吗?

使用Python和文件进行模糊输出

在pandas数据框中计算相对体积比指标,并添加指标值作为新列

使用Python从rotowire中抓取MLB每日阵容

ruamel.yaml dump:如何阻止map标量值被移动到一个新的缩进行?

我对这个简单的异步者的例子有什么错误的理解吗?

Python 3试图访问在线程调用中实例化的类的对象

如何使用pytest在traceback中找到特定的异常

为罕见情况下的回退None值键入

如何写一个polars birame到DuckDB

如何从一个维基页面中抓取和存储多个表格?

使用元组扩展字典的产品挑战