Bạn không nhập nó vào Python của mình chương trình. Điểm của .pgpass
đó là tệp thông thường tuân theo quyền đối với tệp của hệ thống và libpq trình điều khiển thư viện nào chẳng hạn như psycopg2 sử dụng để kết nối với Postgres sẽ xem tệp này để tìm mật khẩu thay vì yêu cầu mật khẩu phải có trong mã nguồn hoặc nhắc nhở về nó.
Ngoài ra, đây không phải là tệp phía máy chủ mà là tệp phía máy khách. Vì vậy, trên hộp * nix, bạn sẽ có ~/.pgpass
tệp chứa thông tin đăng nhập cho các kết nối khác nhau mà bạn muốn có thể thực hiện.
Chỉnh sửa để trả lời nhận xét từ OP:
Hai điều chính cần xảy ra để psycopg2 để xác thực chính xác qua .pgpass
:
- Không không chỉ định mật khẩu trong chuỗi được chuyển tới
psycopg2.connect
- Đảm bảo rằng mục nhập chính xác được thêm vào
.pgpass
tệp cho người dùng sẽ kết nối qua psycopg2 .
Ví dụ:để làm cho điều này hoạt động cho tất cả cơ sở dữ liệu cho một người dùng cụ thể trên localhost cổng 5432 , bạn sẽ thêm dòng sau vào .pgpass
của người dùng đó tệp:
localhost:5432:*:<username>:<password>
Và sau đó connect
cuộc gọi sẽ có dạng sau:
conn = psycopg2.connect("host=localhost dbname=<dbname> user=<username>")
libpq cơ bản trình điều khiển psycopg2 các lần sử dụng sau đó sẽ sử dụng .pgpass
tệp để lấy mật khẩu.