]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
Add ConnectionInfo.parameter_status
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Mon, 12 Apr 2021 16:16:22 +0000 (17:16 +0100)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Thu, 22 Apr 2021 10:57:00 +0000 (11:57 +0100)
psycopg3/psycopg3/conninfo.py
tests/test_conninfo.py

index 50276d67ec711f3894f3583720afdd26b723d1fe..970d37cb403b3e4a6e8095c0d80d2599240d4e68 100644 (file)
@@ -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)
index b4c42ce60722c802c3a1a7bc8e6dceb4bd48cd80..e6af8be711061d312735ad40df13acc577f62a52 100644 (file)
@@ -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]