Vous essayez de vous connecter à PostgreSQL sur localhost
en utilisant un script exécuté sur votre ordinateur, mais aucun serveur PostgreSQL n'y est exécuté.
Pour que cela fonctionne, vous devez vous connecter en ssh au serveur distant, puis y exécuter votre script Python, où le serveur PostgreSQL est "local" par rapport au script Python.
(C'est pourquoi exécuter psql
fonctionne - parce que vous l'exécutez sur le serveur distant , où PostgreSQL est "local" par rapport à psql
).
Vous pouvez également :
-
Utilisez un tunnel SSH pour transférer le port PostgreSQL de l'ordinateur local à l'ordinateur distant ; ou
-
Connectez-vous directement via TCP/IP au serveur PostgreSQL distant en utilisant son nom d'hôte ou son adresse IP, après avoir activé les connexions à distance sur le serveur.
Notez qu'il suffit de mettre l'adresse IP ou le nom d'hôte du serveur dans la chaîne de connexion au lieu de localhost
ne fonctionnera pas sauf si vous configurez également le serveur pour accepter les connexions à distance . Vous devez définir listen_addresses
pour écouter les connexions non locales, ajoutez les règles de pare-feu requises, définissez pg_hba.conf
pour autoriser les connexions à partir de machines distantes et, de préférence, configurez SSL. Tout cela est couvert dans le chapitre Authentification du client du manuel de l'utilisateur de PostgreSQL.
Vous trouverez probablement un tunnel SSH plus simple et plus facile à comprendre.