From: Daniele Varrazzo Date: Mon, 12 Apr 2021 16:16:22 +0000 (+0100) Subject: Add ConnectionInfo.parameter_status X-Git-Tag: 3.0.dev0~66^2~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e5978face95fb7beb4900ef4b32738f15158c06d;p=thirdparty%2Fpsycopg.git Add ConnectionInfo.parameter_status --- diff --git a/psycopg3/psycopg3/conninfo.py b/psycopg3/psycopg3/conninfo.py index 50276d67e..970d37cb4 100644 --- a/psycopg3/psycopg3/conninfo.py +++ b/psycopg3/psycopg3/conninfo.py @@ -5,7 +5,7 @@ Functions to manipulate conninfo strings # Copyright (C) 2020-2021 The Psycopg Team import re -from typing import Any, Dict, List +from typing import Any, Dict, List, Optional from pathlib import Path from . import pq @@ -156,6 +156,10 @@ class ConnectionInfo: def transaction_status(self) -> pq.TransactionStatus: return pq.TransactionStatus(self.pgconn.transaction_status) + def parameter_status(self, param_name: str) -> Optional[str]: + res = self.pgconn.parameter_status(param_name.encode(self._pyenc)) + return res.decode(self._pyenc) if res is not None else None + def _get_pgconn_attr(self, name: str) -> str: value: bytes = getattr(self.pgconn, name) return value.decode(self._pyenc) diff --git a/tests/test_conninfo.py b/tests/test_conninfo.py index b4c42ce60..e6af8be71 100644 --- a/tests/test_conninfo.py +++ b/tests/test_conninfo.py @@ -147,3 +147,9 @@ class TestConnectionInfo: assert info.password == "the-pass-word" assert "password" not in info.get_parameters() assert info.get_parameters()["dbname"] == info.dbname + + def test_parameter_status(self, conn): + assert conn.info.parameter_status("nosuchparam") is None + tz = conn.info.parameter_status("TimeZone") + assert tz and isinstance(tz, str) + assert tz == conn.execute("show timezone").fetchone()[0]