PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

python conectar-se ao postgresql com libpq-pgpass


Você não o importa para seu Python programa. O ponto de .pgpass é que é um arquivo regular sujeito às permissões de arquivo do sistema, e a libpq driver que bibliotecas como psycopg2 use para se conectar ao Postgres procurará a senha neste arquivo em vez de exigir que a senha esteja no código-fonte ou solicitá-la.

Além disso, este não é um arquivo do lado do servidor, mas do lado do cliente. Então, em uma caixa *nix, você teria um ~/.pgpass arquivo contendo as credenciais para as várias conexões que você deseja poder fazer.

Editar em resposta ao comentário do OP:

Duas coisas principais precisam acontecer para que psycopg2 para autenticar corretamente via .pgpass :
  1. Não não especifique uma senha na string passada para psycopg2.connect
  2. Certifique-se de que a entrada correta foi adicionada ao .pgpass arquivo para o usuário que se conectará via psycopg2 .

Por exemplo, para fazer isso funcionar para todos os bancos de dados de um usuário específico em localhost porta 5432 , você adicionaria a seguinte linha ao .pgpass desse usuário Arquivo:
localhost:5432:*:<username>:<password>

E então o connect chamada seria desta forma:
conn = psycopg2.connect("host=localhost dbname=<dbname> user=<username>")

A libpq subjacente driver que psycopg2 usa então utilizará o .pgpass arquivo para obter a senha.