首页 > 解决方案 > 如何使用 postgresql 建立多个连接

问题描述

我目前正在开发一个网络抓取应用程序,其中我有多个脚本(大约 20-30 个脚本)需要连接到数据库(PostgresSQL 11)以进行 INSERT/SELECT/DELETE 等...我发现每个 python 脚本都有一个连接将非常占用资源(总连接将在 20-30 个连接之间)。

我的第一个想法是创建一个上下文管理器,每次我想进行查询时都在其中打开连接 -> 提交 -> 关闭连接,但我确实发现这非常慢并且占用的资源比我应该做的要多。

例子:

import psycopg2
import psycopg2.extras

DATABASE_CONNECTION = {
    "host": configuration.path.database.environment,
    "database": configuration.postgresql.database,
    "user": configuration.postgresql.user,
    "password": configuration.postgresql.password,
}


class QuickConnection:
    def __init__(self):
        self.ps_connection = psycopg2.connect(**DATABASE_CONNECTION)
        self.ps_cursor = self.ps_connection.cursor(cursor_factory=psycopg2.extras.DictCursor)
        self.ps_connection.autocommit = True

    def __enter__(self):
        return self.ps_cursor

    def __exit__(self, err_type, err_value, traceback):
        if err_type and err_value:
            self.ps_connection.rollback()
        self.ps_cursor.close()
        self.ps_connection.close()
        return False

但是我的问题是我希望在使用多个脚本时有更快的速度和效率,每个脚本都有自己的连接

我的问题是:如何在每个连接到 postgresql 数据库的情况下拥有多个脚本,而不需要占用大量资源?

标签: python-3.xpostgresql

解决方案


推荐阅读