这是我第一个广泛使用psycopg2的项目.我试图找到一种方法,在连接try 失败时提取psql错误消息.我已经测试过,如果所有变量都设置正确,下面的代码将正常工作,但是每当出现错误情况时(例如,用户 Select 一个不存在的数据库),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异常编写除块之外的代码?
摘self 的 playbook :
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()