Подтвердить что ты не робот

Подключение к URI в postgres

Я предполагаю, что это довольно простой вопрос, но я не могу понять, почему:

import psycopg2
psycopg2.connect("postgresql://postgres:[email protected]/postgres")

Выдает следующую ошибку:

psycopg2.OperationalError: missing "=" after
"postgresql://postgres:[email protected]/postgres" in connection info string

Любая идея? Согласно документам о строках подключения, я считаю, что это должно сработать, однако это происходит только так:

psycopg2.connect("host=localhost user=postgres password=postgres dbname=postgres")

Я использую последнюю версию psycopg2 на Python2.7.3 на Ubuntu12.04

4b9b3361

Ответ 2

Я бы использовал модуль urlparse для анализа URL-адреса, а затем использовать результат в методе подключения. Таким образом, можно преодолеть проблему psycop2.

import urlparse # import urllib.parse for python 3+
result = urlparse.urlparse("postgresql://postgres:[email protected]/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
)