python - 如何为 asyncpg 持久化连接池并在数据库包装器中使用它?
问题描述
根据 FastApi 文档,我使用Databases包装器和 Sqlalchemy Core 对 postgres 数据库执行异步操作。
我遇到了连接在操作过程中关闭的问题。事实证明,这是一个问题,asyncpg
可以通过使用池来解决。
但是我没有直接使用 asyncpg,而是使用 FastAPI 推荐的数据库包装器。如何创建这样的池:
await asyncpg.create_pool(database="dbname",
user="username",
password="dbpw",
max_inactive_connection_lifetime=3)
并在数据库包装器中使用它?
import databases
from sqlalchemy import MetaData
db = databases.Database(settings.SQLALCHEMY_DATABASE_URI)
metadata = MetaData(schema='main')
解决方案
在后台database.connect uses asyncpg.create_pool
,您的 SQLALCHEMY_DATABASE_URI 已经有连接变量,您还可以添加其他连接选项:
db = databases.Database(settings.SQLALCHEMY_DATABASE_URI, max_inactive_connection_lifetime=3)
它们将被传递给asyncpg.create_pool
连接。
推荐阅读
- javascript - Firebase 数据库参考最初不更新
- python - 如何在 celery 任务中获取烧瓶请求上下文?
- c - 可以在 C 中处理不同输入形式(int 和 str)的程序
- python - PySpark 空值使用中位数和均值估算,能够处理 pyspark 数据框中的非数字列
- android - 从 URL 加载 KML 文件并添加到地图(Kotlin,Android)
- sql - Hive 如何订购编号?
- android - android中的设备管理员可以安装软件包吗?
- c - 如何在 C 中正确地 fscanf txt 文件
- amazon-web-services - 附加时的镶木地板文件保护
- python - 使用正则表达式在 json 数据中查找列表