sql >> Database >  >> RDS >> PostgreSQL

python maakt verbinding met postgresql met libpq-pgpass

Je importeert het niet in je Python programma. Het punt van .pgpass is dat het een normaal bestand is dat onderhevig is aan de bestandspermissies van het systeem, en de libpq driver welke bibliotheken zoals psycopg2 gebruiken om verbinding te maken met Postgres zal naar dit bestand kijken voor het wachtwoord in plaats van dat het wachtwoord in de broncode moet staan ​​of erom wordt gevraagd.

Dit is ook geen server-side bestand, maar een client-side bestand. Dus op een *nix-box zou je een ~/.pgpass . hebben bestand met de inloggegevens voor de verschillende verbindingen die u wilt kunnen maken.

Bewerken in reactie op opmerking van OP:

Er moeten twee belangrijke dingen gebeuren voordat psycopg2 om correct te authenticeren via .pgpass :

  1. Doe niet geef een wachtwoord op in de tekenreeks die wordt doorgegeven aan psycopg2.connect
  2. Zorg ervoor dat de juiste invoer is toegevoegd aan de .pgpass bestand voor de gebruiker die verbinding gaat maken via psycopg2 .

Om dit bijvoorbeeld te laten werken voor alle databases voor een bepaalde gebruiker op localhost poort 5432 , zou u de volgende regel toevoegen aan de .pgpass . van die gebruiker bestand:

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

En dan de connect oproep zou van deze vorm zijn:

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

De onderliggende libpq stuurprogramma dat psycopg2 gebruikt dan de .pgpass bestand om het wachtwoord te krijgen.



  1. Java PreparedStatement klaagt over SQL-syntaxis bij execute()

  2. Kan geen opslagplug-in maken voor Mysql Apache Drill

  3. SQL Auto-Increment door DateTime

  4. Uitvoeren van toestemming voor xp_cmdshell