Du försöker ansluta till PostgreSQL på localhost
använder ett skript som körs på din dator, men det finns ingen PostgreSQL-server som körs där.
För att detta ska fungera måste du ssh till fjärrservern och sedan köra ditt Python-skript där, där PostgreSQL-servern är "lokal" i förhållande till Python-skriptet.
(Det är därför du kör psql
fungerar - eftersom du kör det på fjärrservern , där PostgreSQL är "lokal" i förhållande till psql
).
Alternativt kan du:
-
Använd en SSH-tunnel för att vidarebefordra PostgreSQL-porten från den lokala datorn till den fjärranslutna; eller
-
Anslut direkt över TCP/IP till den fjärranslutna PostgreSQL-servern med dess värdnamn eller IP-adress, efter att du har aktiverat fjärranslutningar på servern.
Observera att du bara lägger in serverns IP-adress eller värdnamn i anslutningssträngen istället för localhost
kommer inte att fungera om du inte också konfigurerar servern att acceptera fjärranslutningar . Du måste ställa in listen_addresses
för att lyssna efter icke-lokala anslutningar, lägg till eventuella brandväggsregler som krävs, ställ in pg_hba.conf
för att tillåta anslutningar från fjärrdatorer, och ställ gärna in SSL. Allt detta behandlas i kapitlet Klientautentisering i PostgreSQL användarmanual.
Du kommer förmodligen hitta en SSH-tunnel enklare och lättare att förstå.