python-3.x - 如何使用 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 数据库的情况下拥有多个脚本,而不需要占用大量资源?
解决方案
推荐阅读
- javascript - 方括号前的逗号 - MDN 文档
- sqlite - sqflite batch.commit() 不适用于颤振
- networking - 如何使在 Virtual Box 中运行的应用程序可通过公共互联网访问
- for-loop - Kotlin For 循环,有点困惑
- google-sheets - 在单个单元格中包含多个值的表单响应
- r - for循环值被视为R中数据表列代码的字符
- django - 重塑 django 数据,通过外键对它们进行分组
- flutter - 如何在颤动中绘制其他应用程序?
- mongodb - 运行 MognoDB 的聚合方法时出错
- firebase - 按两个 where 条件过滤 - Firebase 控制台