Connect to an URI in postgres
The connection string passed to psycopg2.connect
is not parsed by psycopg2
: it is passed verbatim to libpq
. Support for connection URIs was added in PostgreSQL 9.2.
I would use the urlparse
module to parse the url and then use the result in the connection method. This way it's possible to overcome the psycop2 problem.
from urlparse import urlparse # for python 3+ use: from urllib.parse import urlparse
result = urlparse("postgresql://postgres:postgres@localhost/postgres")
username = result.username
password = result.password
database = result.path[1:]
hostname = result.hostname
port = result.port
connection = psycopg2.connect(
database = database,
user = username,
password = password,
host = hostname,
port = port
)