PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

python se connecte à postgresql avec libpq-pgpass

Vous ne l'importez pas dans votre Python programme. Le point de .pgpass est qu'il s'agit d'un fichier normal soumis aux autorisations de fichier du système, et la libpq pilote quelles bibliothèques telles que psycopg2 utiliser pour se connecter à Postgres cherchera dans ce fichier le mot de passe au lieu d'exiger que le mot de passe soit dans le code source ou de le demander.

De plus, ce n'est pas un fichier côté serveur, mais un fichier côté client. Ainsi, sur une boîte *nix, vous auriez un ~/.pgpass fichier contenant les informations d'identification pour les différentes connexions que vous souhaitez pouvoir établir.

Modifier en réponse au commentaire de l'OP :

Deux choses principales doivent se produire pour que psycopg2 pour s'authentifier correctement via .pgpass :

  1. Ne pas spécifiez un mot de passe dans la chaîne transmise à psycopg2.connect
  2. Assurez-vous que la bonne entrée est ajoutée au .pgpass fichier pour l'utilisateur qui se connectera via psycopg2 .

Par exemple, pour que cela fonctionne pour toutes les bases de données d'un utilisateur particulier sur localhost port 5432 , vous ajouteriez la ligne suivante au .pgpass de cet utilisateur fichier :

localhost:5432:*:<username>:<password>

Et puis le connect l'appel serait de cette forme :

conn = psycopg2.connect("host=localhost dbname=<dbname> user=<username>")

La libpq sous-jacente pilote que psycopg2 use utilisera alors le .pgpass fichier pour obtenir le mot de passe.