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

标签 python postgresql psycopg2

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

这是我在 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:”开头的行(具体来说,关于活行/死行的信息,具有更复杂的逻辑,以确定我是否想做一个 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”)。如何获取 INFO: 行?

我试过“fetchall”,但没用。

最佳答案

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

根据文档:

通知

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

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

关于python - 使用 psycopg2,如何获得 "INFO:"行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41212370/

相关文章:

python - oauth2 请求-oauthlib 类型错误 : prepare_request_uri() got multiple values for keyword argument 'scope'

Python datetime.strptime - 解析复杂的字符串

sql - 如何在特定条件下合并两行

python - 使用 Python 将数据从 MSSQL 数据库复制到 Postgresql 数据库

python - psycopg2 找不到符号 _PQbackendPID

python - Django Rest Framework : How can I patch a serializer for unit testing, 在 serializer_class 属性中使用时?

python - 如何在 python 中为 MySQLdb 设置 max_allowed_pa​​cket 或等效项?

python - ProgrammingError 'column "scheme_id"of relation "value_calculator_newunit"does not exist' in Django 1.8.3

sql - 选择同时显示记录之间的差异

python - psycopg2 的构建轮失败