No lo importas a tu Python programa. El punto de .pgpass
es que es un archivo normal sujeto a los permisos de archivos del sistema, y el libpq controlador que bibliotecas como psycopg2 utilizar para conectarse a Postgres buscará la contraseña en este archivo en lugar de solicitar que la contraseña esté en el código fuente o solicitarla.
Además, este no es un archivo del lado del servidor, sino del lado del cliente. Entonces, en un cuadro * nix, tendría un ~/.pgpass
archivo que contiene las credenciales para las distintas conexiones que desea poder realizar.
Editar en respuesta al comentario de OP:
Deben suceder dos cosas principales para que psycopg2 para autenticarse correctamente a través de .pgpass
:
- Hacer no especifique una contraseña en la cadena pasada a
psycopg2.connect
- Asegúrese de agregar la entrada correcta a
.pgpass
archivo para el usuario que se conectará a través de psycopg2 .
Por ejemplo, para que esto funcione para todas las bases de datos de un usuario en particular en localhost puerto 5432 , agregaría la siguiente línea al .pgpass
de ese usuario archivo:
localhost:5432:*:<username>:<password>
Y luego el connect
la llamada sería de esta forma:
conn = psycopg2.connect("host=localhost dbname=<dbname> user=<username>")
El libpq subyacente controlador que psycopg2 uses utilizará el .pgpass
archivo para obtener la contraseña.