diff options
author | Irina Truong <i.chernyavska@gmail.com> | 2017-03-13 11:02:16 -0700 |
---|---|---|
committer | Irina Truong <i.chernyavska@gmail.com> | 2017-03-13 11:02:16 -0700 |
commit | dcd9cbac4f3492b674b414c9bc1ddc54cbf61c98 (patch) | |
tree | 48988228ffb51432ea0710c1abbf3cbf92f412e0 | |
parent | 91a3a9da6da1a8ca2ad27ac6e53062fa0aa802a9 (diff) |
Fix set_session cannot be used inside a transaction when using dsn. Connect #664.
-rw-r--r-- | pgcli/pgexecute.py | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/pgcli/pgexecute.py b/pgcli/pgexecute.py index 650e7f5e..451a0a89 100644 --- a/pgcli/pgexecute.py +++ b/pgcli/pgexecute.py @@ -169,12 +169,6 @@ class PGExecute(object): dsn = "{0} password={1}".format(dsn, password) conn = psycopg2.connect(dsn=unicode2utf8(dsn)) cursor = conn.cursor() - # When we connect using a DSN, we don't really know what db, - # user, etc. we connected to. Let's read it. - db = self._select_one(cursor, 'select current_database()')[0] - user = self._select_one(cursor, 'select current_user')[0] - host = self._select_one(cursor, 'select inet_server_addr()')[0] - port = self._select_one(cursor, 'select inet_server_port()')[0] else: conn = psycopg2.connect( database=unicode2utf8(db), @@ -190,6 +184,16 @@ class PGExecute(object): self.conn.close() self.conn = conn self.conn.autocommit = True + + if dsn: + # 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. + db = self._select_one(cursor, 'select current_database()')[0] + user = self._select_one(cursor, 'select current_user')[0] + host = self._select_one(cursor, 'select inet_server_addr()')[0] + port = self._select_one(cursor, 'select inet_server_port()')[0] + self.dbname = db self.user = user self.password = password |