使用 psycopg2,如何获得 "INFO:" 行?

using psycopg2, how do I get "INFO:" lines?

我想在 python 中编写一个脚本,它分析 table,然后使用该分析的输出进行更多处理。

这是我在 psql 中得到的:

bacula=# analyze verbose version;
INFO:  analyzing "public.version"
INFO:  "version": scanned 1 of 1 pages, containing 1 live rows and 0 dead rows; 1 rows in sample, 1 estimated total rows
ANALYZE
bacula=# 

我想要的行是以 "INFO:" 开头的行(具体来说,关于 live/dead 行的信息,具有更复杂的逻辑,以确定我是否要进行 vacuum full)。

这是我目前的情况:

import psycopg2
conn = psycopg2.connect(connectionstring)
conn.set_isolation_level(0)
cur.execute("analyze verbose version")
print(cur.statusmessage)

cur.statusmessage 显示 psql 输出的最后一行 ("ANALYZE")。如何获取信息:行?

我试过 "fetchall",但没有用。

我认为您正在寻找的是连接对象上的通知属性。

根据文档:

通知

包含会话期间发送给客户端的所有数据库消息的列表。

http://initd.org/psycopg/docs/connection.html