mirror of
https://github.com/psycopg/psycopg2.git
synced 2025-01-31 17:34:08 +03:00
Merge branch 'conn-get-host'
This commit is contained in:
commit
cd9d74c462
1
NEWS
1
NEWS
|
@ -7,6 +7,7 @@ What's new in psycopg 2.8
|
||||||
New features:
|
New features:
|
||||||
|
|
||||||
- Added `~psycopg2.extensions.encrypt_password()` function (:ticket:`#576`).
|
- Added `~psycopg2.extensions.encrypt_password()` function (:ticket:`#576`).
|
||||||
|
- Added `connection.host` property (:ticket:`#726`).
|
||||||
- `~psycopg2.sql.Identifier` can represent qualified names in SQL composition
|
- `~psycopg2.sql.Identifier` can represent qualified names in SQL composition
|
||||||
(:ticket:`#732`).
|
(:ticket:`#732`).
|
||||||
- `!str()` on `~psycopg2.extras.Range` produces a human-readable representation
|
- `!str()` on `~psycopg2.extras.Range` produces a human-readable representation
|
||||||
|
|
|
@ -599,6 +599,24 @@ The ``connection`` class
|
||||||
.. versionadded:: 2.5
|
.. versionadded:: 2.5
|
||||||
|
|
||||||
|
|
||||||
|
.. index::
|
||||||
|
pair: Backend; Host
|
||||||
|
|
||||||
|
.. attribute:: host
|
||||||
|
|
||||||
|
The server host name of the active connection.
|
||||||
|
|
||||||
|
This can be a host name, an IP address, or a directory path if the
|
||||||
|
connection is via Unix socket. (The path case can be distinguished
|
||||||
|
because it will always be an absolute path, beginning with ``/``.)
|
||||||
|
|
||||||
|
.. seealso:: libpq docs for `PQhost()`__ for details.
|
||||||
|
|
||||||
|
.. __: http://www.postgresql.org/docs/current/static/libpq-status.html#LIBPQ-PQHOST
|
||||||
|
|
||||||
|
.. versionadded:: 2.8.0
|
||||||
|
|
||||||
|
|
||||||
.. index::
|
.. index::
|
||||||
pair: Backend; PID
|
pair: Backend; PID
|
||||||
|
|
||||||
|
|
|
@ -992,6 +992,25 @@ psyco_conn_get_backend_pid(connectionObject *self)
|
||||||
return PyInt_FromLong((long)PQbackendPID(self->pgconn));
|
return PyInt_FromLong((long)PQbackendPID(self->pgconn));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* get the current host */
|
||||||
|
|
||||||
|
#define psyco_conn_host_get_doc \
|
||||||
|
"host -- Get the host name."
|
||||||
|
|
||||||
|
static PyObject *
|
||||||
|
psyco_conn_host_get(connectionObject *self)
|
||||||
|
{
|
||||||
|
const char *val = NULL;
|
||||||
|
|
||||||
|
EXC_IF_CONN_CLOSED(self);
|
||||||
|
|
||||||
|
val = PQhost(self->pgconn);
|
||||||
|
if (!val) {
|
||||||
|
Py_RETURN_NONE;
|
||||||
|
}
|
||||||
|
return conn_text_from_chars(self, val);
|
||||||
|
}
|
||||||
|
|
||||||
/* reset the currect connection */
|
/* reset the currect connection */
|
||||||
|
|
||||||
#define psyco_conn_reset_doc \
|
#define psyco_conn_reset_doc \
|
||||||
|
@ -1243,6 +1262,9 @@ static struct PyGetSetDef connectionObject_getsets[] = {
|
||||||
(getter)psyco_conn_deferrable_get,
|
(getter)psyco_conn_deferrable_get,
|
||||||
(setter)psyco_conn_deferrable_set,
|
(setter)psyco_conn_deferrable_set,
|
||||||
psyco_conn_deferrable_doc },
|
psyco_conn_deferrable_doc },
|
||||||
|
{ "host",
|
||||||
|
(getter)psyco_conn_host_get, NULL,
|
||||||
|
psyco_conn_host_get_doc },
|
||||||
{NULL}
|
{NULL}
|
||||||
};
|
};
|
||||||
#undef EXCEPTION_GETTER
|
#undef EXCEPTION_GETTER
|
||||||
|
|
|
@ -39,7 +39,7 @@ from .testutils import (
|
||||||
skip_after_postgres, skip_before_libpq, skip_after_libpq,
|
skip_after_postgres, skip_before_libpq, skip_after_libpq,
|
||||||
ConnectingTestCase, skip_if_tpc_disabled, skip_if_windows, slow)
|
ConnectingTestCase, skip_if_tpc_disabled, skip_if_windows, slow)
|
||||||
|
|
||||||
from .testconfig import dsn, dbname
|
from .testconfig import dbhost, dsn, dbname
|
||||||
|
|
||||||
|
|
||||||
class ConnectionTests(ConnectingTestCase):
|
class ConnectionTests(ConnectingTestCase):
|
||||||
|
@ -1682,6 +1682,19 @@ while True:
|
||||||
self.assert_(not err, err)
|
self.assert_(not err, err)
|
||||||
|
|
||||||
|
|
||||||
|
class TestConnectionProps(ConnectingTestCase):
|
||||||
|
def test_host(self):
|
||||||
|
self.assertFalse(self.conn.closed)
|
||||||
|
expected = dbhost if dbhost else "/"
|
||||||
|
self.assertIn(expected, self.conn.host)
|
||||||
|
|
||||||
|
def test_host_readonly(self):
|
||||||
|
self.assertFalse(self.conn.closed)
|
||||||
|
with self.assertRaises(AttributeError):
|
||||||
|
self.conn.host = 'override'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def test_suite():
|
def test_suite():
|
||||||
return unittest.TestLoader().loadTestsFromName(__name__)
|
return unittest.TestLoader().loadTestsFromName(__name__)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user