PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Python stellt mit libpq-pgpass eine Verbindung zu postgresql her

Sie importieren es nicht in Ihr Python Programm. Der Punkt von .pgpass ist, dass es sich um eine normale Datei handelt, die den Dateiberechtigungen des Systems unterliegt, und die libpq Treiber welche Bibliotheken wie psycopg2 verwenden, um sich mit Postgres zu verbinden wird in dieser Datei nach dem Passwort suchen, anstatt das Passwort im Quellcode zu verlangen oder danach zu fragen.

Außerdem ist dies keine serverseitige Datei, sondern eine clientseitige. Auf einer *nix-Box hätten Sie also einen ~/.pgpass Datei mit den Anmeldeinformationen für die verschiedenen Verbindungen, die Sie herstellen möchten.

Bearbeiten als Antwort auf Kommentar von OP:

Für psycopg2 müssen im Wesentlichen zwei Dinge geschehen um sich korrekt über .pgpass zu authentifizieren :

  1. Tun Sie nicht Geben Sie ein Passwort in der an psycopg2.connect übergebenen Zeichenfolge an
  2. Stellen Sie sicher, dass der richtige Eintrag zu .pgpass hinzugefügt wird Datei für den Benutzer, der sich über psycopg2 verbindet .

Zum Beispiel, damit dies für alle Datenbanken eines bestimmten Benutzers auf localhost funktioniert Port 5432 , würden Sie die folgende Zeile zu .pgpass dieses Benutzers hinzufügen Datei:

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

Und dann das connect call hätte folgende Form:

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

Die zugrunde liegende libpq Treiber, der psycopg2 Benutzer verwenden dann den .pgpass Datei, um das Passwort zu erhalten.