PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

python si connette a postgresql con libpq-pgpass

Non lo importi nel tuo Python programma. Il punto di .pgpass è che si tratta di un file normale soggetto ai permessi dei file del sistema e a libpq driver quali librerie come psycopg2 usa per connetterti a Postgres cercherà in questo file la password invece di richiedere che la password sia nel codice sorgente o richiederla.

Inoltre, questo non è un file lato server, ma uno lato client. Quindi, su una scatola *nix, avresti un ~/.pgpass file contenente le credenziali per le varie connessioni che vuoi poter effettuare.

Modifica in risposta al commento di OP:

Due cose principali devono accadere per psycopg2 per autenticarsi correttamente tramite .pgpass :

  1. Non non specificare una password nella stringa passata a psycopg2.connect
  2. Assicurati che la voce corretta sia aggiunta al .pgpass file per l'utente che si connetterà tramite psycopg2 .

Ad esempio, per farlo funzionare per tutti i database per un particolare utente su localhost porta 5432 , dovresti aggiungere la seguente riga al .pgpass di quell'utente file:

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

E poi il connect la chiamata sarebbe di questa forma:

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

La sottostante libpq driver che psycopg2 userà quindi il .pgpass file per ottenere la password.