From 8d923618990099ae6f7f3e365f6b572c92224e57 Mon Sep 17 00:00:00 2001 From: Yogesh Mahajan Date: Tue, 5 May 2026 10:44:28 +0530 Subject: [PATCH 1/2] Ensure to use psycopg3 is used while connecting to postgres DB when PGADMIN_CONFIG_CONFIG_DATABASE_URI is specified. --- web/pgadmin/utils/check_external_config_db.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/web/pgadmin/utils/check_external_config_db.py b/web/pgadmin/utils/check_external_config_db.py index 7ac91aa6e08..acd44a4a2d9 100644 --- a/web/pgadmin/utils/check_external_config_db.py +++ b/web/pgadmin/utils/check_external_config_db.py @@ -15,6 +15,9 @@ def check_external_config_db(database_uri): Check if external config database exists if it is being used. """ + if database_uri.startswith("postgresql://") or database_uri.startswith( + "postgres://"): + database_uri = database_uri.replace("://", "+psycopg://", 1) engine = create_engine(database_uri) try: connection = engine.connect() From f34a5b374f4fcdfa3300dc5de04f70d50e37ecd3 Mon Sep 17 00:00:00 2001 From: Yogesh Mahajan Date: Tue, 5 May 2026 20:16:58 +0530 Subject: [PATCH 2/2] Fix the review comments. --- web/pgadmin/__init__.py | 6 +++++- web/pgadmin/utils/check_external_config_db.py | 9 ++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/web/pgadmin/__init__.py b/web/pgadmin/__init__.py index fab4925cc3c..120f82dcab8 100644 --- a/web/pgadmin/__init__.py +++ b/web/pgadmin/__init__.py @@ -337,7 +337,11 @@ def get_locale(): ########################################################################## if config.CONFIG_DATABASE_URI is not None and \ len(config.CONFIG_DATABASE_URI) > 0: - app.config['SQLALCHEMY_DATABASE_URI'] = config.CONFIG_DATABASE_URI + _db_uri = re.sub( + r"^postgres(ql)?://", "postgresql+psycopg://", + config.CONFIG_DATABASE_URI, count=1 + ) + app.config['SQLALCHEMY_DATABASE_URI'] = _db_uri else: app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///{0}?timeout={1}' \ .format(config.SQLITE_PATH.replace('\\', '/'), diff --git a/web/pgadmin/utils/check_external_config_db.py b/web/pgadmin/utils/check_external_config_db.py index acd44a4a2d9..fec4e6b792a 100644 --- a/web/pgadmin/utils/check_external_config_db.py +++ b/web/pgadmin/utils/check_external_config_db.py @@ -7,6 +7,8 @@ # ########################################################################## +import re + from sqlalchemy import create_engine, inspect @@ -15,9 +17,10 @@ def check_external_config_db(database_uri): Check if external config database exists if it is being used. """ - if database_uri.startswith("postgresql://") or database_uri.startswith( - "postgres://"): - database_uri = database_uri.replace("://", "+psycopg://", 1) + if database_uri.startswith(("postgresql://", "postgres://")): + database_uri = re.sub( + r"^postgres(ql)?://", "postgresql+psycopg://", database_uri, count=1 + ) engine = create_engine(database_uri) try: connection = engine.connect()