Ответ 1
Строка подключения, переданная в psycopg2.connect
, не обрабатывается psycopg2
: она передается до libpq
. Поддержка URI для подключения была добавлена в PostgreSQL 9.2.
Я предполагаю, что это довольно простой вопрос, но я не могу понять, почему:
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
Строка подключения, переданная в psycopg2.connect
, не обрабатывается psycopg2
: она передается до libpq
. Поддержка URI для подключения была добавлена в PostgreSQL 9.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
)