postgresql 在一个连接中使用多个数据库

bejyjqdl  于 2023-06-05  发布在  PostgreSQL
关注(0)|答案(1)|浏览(559)

我想创建一个与数据库交互的类,但是只使用一个池(通过单例模式实现),同时,我可以在数据库之间切换,而无需重新创建连接。
也就是说,我获取一个连接,然后我通过with上下文管理器使用acquire,然后我想连接到一个特定的数据库。我该怎么做?

class ConnectionPool:
    _instance = None

    def __new__(cls, *args, **kwargs):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
        return cls._instance

    async def init(self):
        self.pool = await asyncpg.create_pool(
            dsn=f"postgres://{cfg.DB_USER}:{cfg.DB_PASSWORD}@{cfg.DB_HOST}:{cfg.DB_PORT}"
        )

    async def acquire(self):
        conn = await self.pool.acquire()
        return conn

    async def release(self, conn):
        await self.pool.release(conn)

这里有一个类,它被初始化一次,创建主池,然后简单地分发连接,我已经想连接到一个特定的数据库并使用它。
或者,您可以提供自己的实现。我最需要的是-系统的最小负载。使用多个数据库。
已经写了上面的所有内容。一个异步连接中的多个数据库

v440hwme

v440hwme1#

一旦建立了到PostgreSQL数据库的连接,就不能切换到其他数据库,除非关闭旧连接并打开新连接。因此,每个数据库需要一个连接池。
如果您需要文档参考,here goes
连接到数据库服务器时,客户端必须在其连接请求中指定数据库名称。每个连接不能访问多个数据库。

相关问题