Connectez - vous à une URI à postgres
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 les docs sur les chaînes de connexion je crois qu'il devrait fonctionner, cependant il ne fait comme 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
24
demandé sur
Darek
2013-03-26 13:58:20
3 réponses
la chaîne de connexion est passée à psycopg2.connect
n'est pas analysé par psycopg2
: il est passé verbatim libpq
. la prise en charge des URIs de connexion a été ajoutée dans PostgreSQL 9.2.
9
répondu
kynan
2015-09-15 15:06:02
j'utiliserais le urlparse
module pour analyser l'url, puis utiliser le résultat dans la méthode de connexion. De cette façon, il est possible de surmonter le problème de 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
)
35
répondu
joamag
2018-05-31 22:32:10