sql >> Base de Datos >  >> RDS >> PostgreSQL

python se conecta a postgresql con libpq-pgpass

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 :

  1. Hacer no especifique una contraseña en la cadena pasada a psycopg2.connect
  2. 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.