I'm guessing this is a pretty basic question, but I can't figure out why:
import psycopg2 psycopg2.connect("postgresql://postgres:postgres@localhost/postgres")
Is giving the following error:
psycopg2.OperationalError: missing "=" after "postgresql://postgres:postgres@localhost/postgres" in connection info string
Any idea? According to the docs about connection strings I believe it should work, however it only does like this:
psycopg2.connect("host=localhost user=postgres password=postgres dbname=postgres")
I'm using the latest psycopg2 version on Python2.7.3 on Ubuntu12.04
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.
import urlparse # for python 3+ use: from urllib.parse import urlparse result = urlparse.urlparse("postgresql://postgres:postgres@localhost/postgres") username = result.username password = result.password database = result.path[1:] hostname = result.hostname connection = psycopg2.connect( database = database, user = username, password = password, host = hostname )
Try postgres as the scheme rather than postgresql