Sie versuchen, eine Verbindung zu PostgreSQL auf localhost
herzustellen mit einem Skript, das auf Ihrem Computer läuft, aber dort läuft kein PostgreSQL-Server.
Damit dies funktioniert, müssten Sie per SSH zum Remote-Server gehen und dann Ihr Python-Skript dort ausführen, wo der PostgreSQL-Server relativ zum Python-Skript "lokal" ist.
(Deshalb wird psql
ausgeführt funktioniert - weil Sie es auf dem Remote-Server ausführen , wobei PostgreSQL relativ zu psql
"lokal" ist ).
Alternativ könnten Sie:
-
Verwenden Sie einen SSH-Tunnel, um den PostgreSQL-Port weiterzuleiten vom lokalen Computer zum entfernten; oder
-
Verbinden Sie sich direkt über TCP/IP mit dem entfernten PostgreSQL-Server unter Verwendung seines Hostnamens oder seiner IP-Adresse, nachdem Sie entfernte Verbindungen auf dem Server aktiviert haben.
Beachten Sie, dass Sie anstelle von localhost
einfach die IP-Adresse oder den Hostnamen des Servers in die Verbindungszeichenfolge einfügen funktioniert nicht es sei denn, Sie konfigurieren den Server auch so, dass er Remote-Verbindungen akzeptiert . Sie müssen listen_addresses
festlegen Um auf nicht-lokale Verbindungen zu lauschen, fügen Sie alle erforderlichen Firewall-Regeln hinzu und legen Sie pg_hba.conf
fest um Verbindungen von entfernten Rechnern zuzulassen, und richten Sie vorzugsweise SSL ein. All dies wird im Kapitel Client-Authentifizierung des PostgreSQL-Benutzerhandbuchs behandelt.
Wahrscheinlich finden Sie einen SSH-Tunnel einfacher und verständlicher.