sql >> Databasteknik >  >> RDS >> PostgreSQL

python anslut till postgresql med libpq-pgpass

Du importerar det inte till din Python program. Poängen med .pgpass är att det är en vanlig fil som omfattas av systemets filbehörigheter, och libpq drivrutin vilka bibliotek som psycopg2 använd för att ansluta till Postgres kommer att leta efter lösenordet i den här filen istället för att kräva att lösenordet finns i källkoden eller be om det.

Det här är inte heller en fil på serversidan, utan en fil på klientsidan. Så på en *nix-box skulle du ha en ~/.pgpass fil som innehåller autentiseringsuppgifterna för de olika anslutningarna du vill kunna göra.

Redigera som svar på kommentar från OP:

Två huvudsakliga saker måste hända för att psycopg2 ska fungera för att korrekt autentisera via .pgpass :

  1. Gör inte ange ett lösenord i strängen som skickas till psycopg2.connect
  2. Se till att rätt post läggs till i .pgpass fil för användaren som ska ansluta via psycopg2 .

Till exempel för att få detta att fungera för alla databaser för en viss användare på localhost port 5432 , skulle du lägga till följande rad i användarens .pgpass fil:

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

Och sedan connect anropet skulle ha denna form:

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

Den underliggande libpq drivrutin som psycopg2 uses kommer då att använda .pgpass fil för att få lösenordet.



  1. MySQL kolumnnamn standarder / konventioner

  2. Hur använder man variabelinställningar i triggerfunktioner?

  3. UTF8 och japanska tecken

  4. nvarchar(max) vs NText