Je suppose que c'est une question assez basique, mais je ne peux pas comprendre pourquoi:
import psycopg2
psycopg2.connect("postgresql://postgres:postgres@localhost/postgres")
Donne l'erreur suivante:
psycopg2.OperationalError: missing "=" after
"postgresql://postgres:postgres@localhost/postgres" in connection info string
Une idée? Selon la documentation sur les chaînes de connexion je pense que cela devrait fonctionner, mais il n'aime que ceci:
psycopg2.connect("Host=localhost user=postgres password=postgres dbname=postgres")
J'utilise la dernière version de psycopg2 sur Python2.7.3 sur Ubuntu12.04
La chaîne de connexion passée à psycopg2.connect
n'est pas analysé par psycopg2
: il est transmis textuellement à libpq
. La prise en charge des URI de connexion a été ajoutée dans PostgreSQL 9.2 .
J'utiliserais le module urlparse
pour analyser l'url et ensuite utiliser le résultat dans la méthode de connexion. De cette façon, il est possible de surmonter le problème 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
)