【发布时间】:2022-11-02 05:49:12
【问题描述】:
我想了解这个产量的作用。在我找到的示例中,我总是看到这种类型的代码,但我不明白它与普通实例有什么不同
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
此示例在 FastAPI 文档中:https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-with-yield/
【问题讨论】:
-
这回答了你的问题了吗? What does the "yield" keyword do?
-
我看过几个使用数组的例子,但是这段代码不是这样,我不明白这个yield在做什么,它只是一个数据库会话
-
该示例确实
async def get_db():-async部分是有道理的。但是您引用的页面对您为什么这样做有很长的解释。通过在try中执行yield,代码保证finally子句(关闭数据库)始终运行,即使出现异常也是如此。 -
yield允许依赖项在请求完成后运行额外的代码,例如进行一些额外的清理,例如关闭不再需要的任何延迟数据库连接(如给定示例中)或删除临时文件。 -
这是一个
context manager(Python 的一个术语)实现,可帮助您在退出上下文之前自动关闭连接。
标签: python sqlalchemy generator fastapi yield