これは非常に基本的な質問だと思いますが、その理由はわかりません。
import psycopg2
psycopg2.connect("postgresql://postgres:postgres@localhost/postgres")
次のエラーが発生しています:
psycopg2.OperationalError: missing "=" after
"postgresql://postgres:postgres@localhost/postgres" in connection info string
何か案が? 接続文字列に関するドキュメント によると、動作するはずですが、次のようにしか動作しません。
psycopg2.connect("Host=localhost user=postgres password=postgres dbname=postgres")
Ubuntu12.04のPython2.7.3で最新のpsycopg2バージョンを使用しています
psycopg2.connect
に渡された接続文字列は、psycopg2
によって解析されません:libpq
にそのまま渡されます。 PostgreSQL 9.2で接続URIのサポートが追加されました 。
urlparse
モジュールを使用してURLを解析し、その結果を接続メソッドで使用します。このようにして、psycop2の問題を克服することができます。
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
)