summaryrefslogtreecommitdiffstats
path: root/pgcli
diff options
context:
space:
mode:
authorAmjith Ramanujam <amjith.r@gmail.com>2019-10-28 10:08:59 -0700
committerGitHub <noreply@github.com>2019-10-28 10:08:59 -0700
commitf3dc23a94b57ccd7c1909dc32174b3bc8c501919 (patch)
tree6d6b83cc8f96a49be7f6eb576ffa6fbca69cfd18 /pgcli
parent199a0223e044ec3116879e67d2b924050e4afa78 (diff)
parentd75878185847c69b239596bb45f159446b674b03 (diff)
Merge pull request #1112 from dbcli/j-bennet/pqconninfo-1110
[WIP] Fix for PQconninfo not available.
Diffstat (limited to 'pgcli')
-rw-r--r--pgcli/pgexecute.py30
1 files changed, 24 insertions, 6 deletions
diff --git a/pgcli/pgexecute.py b/pgcli/pgexecute.py
index 7186ec13..e4605c02 100644
--- a/pgcli/pgexecute.py
+++ b/pgcli/pgexecute.py
@@ -265,14 +265,32 @@ class PGExecute(object):
# When we connect using a DSN, we don't really know what db,
# user, etc. we connected to. Let's read it.
# Note: moved this after setting autocommit because of #664.
- # TODO: use actual connection info from psycopg2.extensions.Connection.info as psycopg>2.8 is available and required dependency # noqa
- dsn_parameters = conn.get_dsn_parameters()
+ libpq_version = psycopg2.__libpq_version__
+ dsn_parameters = {}
+ if libpq_version >= 93000:
+ # use actual connection info from psycopg2.extensions.Connection.info
+ # as libpq_version > 9.3 is available and required dependency
+ dsn_parameters = conn.info.dsn_parameters
+ else:
+ try:
+ dsn_parameters = conn.get_dsn_parameters()
+ except Exception as x:
+ # https://github.com/dbcli/pgcli/issues/1110
+ # PQconninfo not available in libpq < 9.3
+ _logger.info("Exception in get_dsn_parameters: %r", x)
+
+ if dsn_parameters:
+ self.dbname = dsn_parameters.get("dbname")
+ self.user = dsn_parameters.get("user")
+ self.host = dsn_parameters.get("host")
+ self.port = dsn_parameters.get("port")
+ else:
+ self.dbname = conn_params.get("database")
+ self.user = conn_params.get("user")
+ self.host = conn_params.get("host")
+ self.port = conn_params.get("port")
- self.dbname = dsn_parameters.get("dbname")
- self.user = dsn_parameters.get("user")
self.password = password
- self.host = dsn_parameters.get("host")
- self.port = dsn_parameters.get("port")
self.extra_args = kwargs
if not self.host: