Du forsøger at oprette forbindelse til PostgreSQL på localhost
ved at bruge et script, der kører på din computer, men der kører ingen PostgreSQL-server der.
For at dette skal virke, skal du ssh til fjernserveren og derefter køre dit Python-script der, hvor PostgreSQL-serveren er "lokal" i forhold til Python-scriptet.
(Det er derfor, at du kører psql
virker - fordi du kører det på fjernserveren , hvor PostgreSQL er "lokal" i forhold til psql
).
Alternativt kan du:
-
Brug en SSH-tunnel til at fremsende PostgreSQL-porten fra den lokale computer til den eksterne computer; eller
-
Tilslut direkte via TCP/IP til den eksterne PostgreSQL-server ved hjælp af dens værtsnavn eller IP-adresse, efter at have aktiveret fjernforbindelser på serveren.
Bemærk, at du bare sætter serverens IP-adresse eller værtsnavn i forbindelsesstrengen i stedet for localhost
virker ikke medmindre du også konfigurerer serveren til at acceptere fjernforbindelser . Du skal indstille listen_addresses
for at lytte efter ikke-lokale forbindelser, tilføje eventuelle påkrævede firewall-regler, sæt pg_hba.conf
at tillade forbindelser fra fjernmaskiner, og helst opsætte SSL. Alt dette er dækket i kapitlet om klientgodkendelse i PostgreSQL-brugermanualen.
Du vil sandsynligvis finde en SSH-tunnel enklere og lettere at forstå.