Psycopg2 peer authentication for user postgres
You need to supply the host
conn = psycopg2.connect("dbname='template1' user='dbuser' host='localhost' password='dbpass'")
This is sort of how yoru call should look like.
!/usr/bin/python
import psycopg2
conn = psycopg2.connect(database="postgres", user="postgres", password="postgres", port=5432)
conn.close()
these are the some authentication method of postgresql
peer means it will trust the identity (authenticity) of UNIX user. So not asking for a password.
md5 means it will always ask for a password, and validate it after hashing with MD5.
trust means it will never ask for a password, and always trust any connection.
I your case youe have to cahnge like this:
host all all 127.0.0.1/32 ident
to
host all all 127.0.0.1/32 md5
and
host all all ::1/128 ident
to
host all all ::1/128 md5
Peer authentication works by comparing the Postgres username in your connection string to the name of the Linux user who is running the script.
Try running your Python script with sudo -u postgres
.