0

我正在使用 PyGreSQL 4.1.1 和 Postgres 9.5,并编写了一些存储函数。我RAISE在函数内部使用不同级别来进行调试,这在 中运行良好psql,但我还没有找到在 Python 中访问这些消息的方法。

例子:

CREATE OR REPLACE FUNCTION my_function()  RETURNS BOOLEAN AS $_$
    BEGIN
        RAISE NOTICE 'A notice from my function.';
        RETURN TRUE;
    END
$_$ LANGUAGE plpgsql;

我的 Python 代码如下所示:

conn = pgdb.connect(database = 'mydb', user = 'myself')
cursor = conn.cursor()
cursor.execute("SELECT my_function()"):

运行后如何访问通知(A notice from my function.my_function()

4

1 回答 1

0

由于@klin 的评论,我发现了一个有点不干净的解决方案。该pgdb.Connection对象将基础pg.Connection对象存储在名为 的私有属性中_cnx。因此,您可以像这样设置通知接收器:

def my_notice_receiver(notice):
    logging.info("Notice: %s", notice)

conn._cnx.set_notice_receiver(my_notice_receiver)
于 2017-11-09T18:39:04.043 回答