mirror of
https://github.com/psycopg/psycopg2.git
synced 2025-02-18 10:00:31 +03:00
Added ConnectionInfo.error_message
This commit is contained in:
parent
1ac6359fef
commit
439dff974d
|
@ -182,6 +182,7 @@ introspection etc.
|
||||||
of digits is always ``00``. For example, version 9.3.5 will be
|
of digits is always ``00``. For example, version 9.3.5 will be
|
||||||
returned as ``90305``, version 10.2 as ``100002``.
|
returned as ``90305``, version 10.2 as ``100002``.
|
||||||
|
|
||||||
|
.. autoattribute:: error_message
|
||||||
|
|
||||||
|
|
||||||
.. class:: Column
|
.. class:: Column
|
||||||
|
|
|
@ -238,6 +238,28 @@ server_version_get(connInfoObject *self)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static const char error_message_doc[] =
|
||||||
|
"The error message most recently generated by an operation on the connection.\n"
|
||||||
|
"\n"
|
||||||
|
"`!None` if there is no current message.\n"
|
||||||
|
"\n"
|
||||||
|
".. seealso:: libpq docs for `PQerrorMessage()`__ for details.\n"
|
||||||
|
".. __: https://www.postgresql.org/docs/current/static/libpq-status.html"
|
||||||
|
"#LIBPQ-PQERRORMESSAGE";
|
||||||
|
|
||||||
|
static PyObject *
|
||||||
|
error_message_get(connInfoObject *self)
|
||||||
|
{
|
||||||
|
const char *val;
|
||||||
|
|
||||||
|
val = PQerrorMessage(self->conn->pgconn);
|
||||||
|
if (!val || !val[0]) {
|
||||||
|
Py_RETURN_NONE;
|
||||||
|
}
|
||||||
|
return conn_text_from_chars(self->conn, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static struct PyGetSetDef connInfoObject_getsets[] = {
|
static struct PyGetSetDef connInfoObject_getsets[] = {
|
||||||
{ "dbname", (getter)dbname_get, NULL, (char *)dbname_doc },
|
{ "dbname", (getter)dbname_get, NULL, (char *)dbname_doc },
|
||||||
{ "user", (getter)user_get, NULL, (char *)user_doc },
|
{ "user", (getter)user_get, NULL, (char *)user_doc },
|
||||||
|
@ -252,6 +274,8 @@ static struct PyGetSetDef connInfoObject_getsets[] = {
|
||||||
(char *)protocol_version_doc },
|
(char *)protocol_version_doc },
|
||||||
{ "server_version", (getter)server_version_get, NULL,
|
{ "server_version", (getter)server_version_get, NULL,
|
||||||
(char *)server_version_doc },
|
(char *)server_version_doc },
|
||||||
|
{ "error_message", (getter)error_message_get, NULL,
|
||||||
|
(char *)error_message_doc },
|
||||||
{NULL}
|
{NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1752,6 +1752,18 @@ class TestConnectionInfo(ConnectingTestCase):
|
||||||
|
|
||||||
self.assertEqual(self.bconn.info.server_version, 0)
|
self.assertEqual(self.bconn.info.server_version, 0)
|
||||||
|
|
||||||
|
def test_error_message(self):
|
||||||
|
self.assertIsNone(self.conn.info.error_message)
|
||||||
|
self.assertIsNotNone(self.bconn.info.error_message)
|
||||||
|
|
||||||
|
cur = self.conn.cursor()
|
||||||
|
try:
|
||||||
|
cur.execute("select 1 from nosuchtable")
|
||||||
|
except psycopg2.DatabaseError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
self.assert_('nosuchtable' in self.conn.info.error_message)
|
||||||
|
|
||||||
|
|
||||||
def test_suite():
|
def test_suite():
|
||||||
return unittest.TestLoader().loadTestsFromName(__name__)
|
return unittest.TestLoader().loadTestsFromName(__name__)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user