【发布时间】:2014-08-11 11:47:13
【问题描述】:
这是我第一个广泛使用 psycopg2 的项目。我正在尝试找到一种方法来在连接尝试失败时提取 psql 错误消息。如果所有变量都设置正确,我已经测试过下面的代码将起作用,但是每当发生错误情况(例如用户选择不存在的数据库)时,Python 会给我以下信息:
I am unable to connect to the database
None
Traceback (most recent call last):
File "./duplicate_finder.py", line 163, in <module>
main(sys.argv[1:])
File "./duplicate_finder.py", line 142, in main
print e.diag.message_detail
AttributeError: 'OperationalError' object has no attribute 'diag'
是否有一个简单的、包罗万象的方法来捕获 psql 在连接失败时生成的任何错误消息,或者我是否需要为多个 psycopg2 异常编写 except 块?
从我的脚本中提取:
import sys, getopt, os, time, csv, psycopg2
...
...
conn_string = "host=" + dbhost + " dbname=" + database + " user=" + dbuser + " password=" + dbpass
try:
conn = psycopg2.connect(conn_string)
except psycopg2.Error as e:
print "Unable to connect!"
print e.pgerror
print e.diag.message_detail
sys.exit(1)
else:
print "Connected!"
cur = conn.cursor()
cur.execute("SELECT id, lastname, firstname, location FROM test ORDER BY ctl_upd_dttm DESC;")
print cur.fetchone()
...
conn.close()
【问题讨论】:
标签: python postgresql psycopg2