Опитвате се да се свържете с PostgreSQL на localhost
използвайки скрипт, работещ на вашия компютър, но там няма работещ сървър на PostgreSQL.
За да работи това, ще трябва да се свържете с отдалечения сървър по ssh, след което да изпълните своя Python скрипт там, където PostgreSQL сървърът е „локален“ спрямо Python скрипта.
(Ето защо стартирането на psql
работи - защото го изпълнявате на отдалечения сървър , където PostgreSQL е "локален" спрямо psql
).
Като алтернатива можете да:
-
Използвайте SSH тунел, за да препратите порта на PostgreSQL от локалния компютър към отдалечения; или
-
Свържете се директно през TCP/IP към отдалечения PostgreSQL сървър, като използвате неговото име на хост или IP адрес, след като активирате отдалечени връзки на сървъра.
Имайте предвид, че просто поставяне на IP адреса на сървъра или името на хоста в низа за свързване вместо localhost
няма да работи освен ако не конфигурирате сървъра да приема отдалечени връзки . Трябва да зададете listen_addresses
за да слушате за нелокални връзки, добавете всички необходими правила на защитната стена, задайте pg_hba.conf
за разрешаване на връзки от отдалечени машини и за предпочитане настройка на SSL. Всичко това е описано в главата Удостоверяване на клиента на потребителското ръководство на PostgreSQL.
Вероятно ще намерите SSH тунел за по-прост и лесен за разбиране.