diff options
Diffstat (limited to 'pgcli/pgexecute.py')
-rw-r--r-- | pgcli/pgexecute.py | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/pgcli/pgexecute.py b/pgcli/pgexecute.py index 58986aca..d428e840 100644 --- a/pgcli/pgexecute.py +++ b/pgcli/pgexecute.py @@ -183,6 +183,8 @@ class PGExecute(object): SELECT pg_catalog.pg_get_functiondef(f.f_oid) FROM f''' + version_query = "SELECT current_setting('server_version')" + def __init__(self, database, user, password, host, port, dsn, **kwargs): self.dbname = database self.user = user @@ -191,8 +193,19 @@ class PGExecute(object): self.port = port self.dsn = dsn self.extra_args = {k: unicode2utf8(v) for k, v in kwargs.items()} + self.server_version = None self.connect() + def get_server_version(self): + if self.server_version: + return self.server_version + with self.conn.cursor() as cur: + _logger.debug('Version Query. sql: %r', self.version_query) + cur.execute(self.version_query) + result = cur.fetchone() + self.server_version = result[0] if result else '' + return self.server_version + def connect(self, database=None, user=None, password=None, host=None, port=None, dsn=None, **kwargs): @@ -280,18 +293,15 @@ class PGExecute(object): else: return json_data - def failed_transaction(self): status = self.conn.get_transaction_status() return status == ext.TRANSACTION_STATUS_INERROR - def valid_transaction(self): status = self.conn.get_transaction_status() return (status == ext.TRANSACTION_STATUS_ACTIVE or status == ext.TRANSACTION_STATUS_INTRANS) - def run(self, statement, pgspecial=None, exception_formatter=None, on_error_resume=False): """Execute the sql in the database and return the results. @@ -707,7 +717,6 @@ class PGExecute(object): for row in cur: yield row - def casing(self): """Yields the most common casing for names used in db functions""" with self.conn.cursor() as cur: |