在 app.on_event('startup') 中连接到数据库与在 FastAPI 中的依赖项之间的区别
Difference between connecting to the database in app.on_event('startup') vs in a dependency in FastAPI
在 Tiangolo 的 FastAPI 中,它声明您可以通过使用依赖项来创建持久数据库连接
https://fastapi.tiangolo.com/tutorial/sql-databases/#create-a-dependency
但是,在异步数据库文档中,数据库是在应用程序启动时连接的
https://fastapi.tiangolo.com/advanced/async-sql-databases/#connect-and-disconnect
encode/databases 文档
遵循相同的模式
https://www.encode.io/databases/connections_and_transactions/
哪种模式是正确的?在我看来,使用依赖项,每个 API 调用将创建一个数据库连接,而在启动期间连接数据库将为每个工作人员建立一个数据库连接。如果这是正确的,那么在启动时连接到数据库会更好。
两者有什么区别,哪个更好?
各个数据库库我就不细说了。我只想说大多数现代工具都使用连接池。他们明确或隐含地这样做,隐藏在某些抽象背后,例如您的第一个 link.
中的 Session
在您的所有示例中,连接池都是在应用程序启动时创建的。而在创建session
时,并没有建立新连接的繁重操作,只是从池中取出一个连接,当会话关闭时,将连接归还给池。
在 Tiangolo 的 FastAPI 中,它声明您可以通过使用依赖项来创建持久数据库连接
https://fastapi.tiangolo.com/tutorial/sql-databases/#create-a-dependency
但是,在异步数据库文档中,数据库是在应用程序启动时连接的
https://fastapi.tiangolo.com/advanced/async-sql-databases/#connect-and-disconnect
encode/databases 文档
遵循相同的模式https://www.encode.io/databases/connections_and_transactions/
哪种模式是正确的?在我看来,使用依赖项,每个 API 调用将创建一个数据库连接,而在启动期间连接数据库将为每个工作人员建立一个数据库连接。如果这是正确的,那么在启动时连接到数据库会更好。
两者有什么区别,哪个更好?
各个数据库库我就不细说了。我只想说大多数现代工具都使用连接池。他们明确或隐含地这样做,隐藏在某些抽象背后,例如您的第一个 link.
中的Session
在您的所有示例中,连接池都是在应用程序启动时创建的。而在创建session
时,并没有建立新连接的繁重操作,只是从池中取出一个连接,当会话关闭时,将连接归还给池。