Это мой первый проект, широко использующий 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?
Выдержка из моего сценария:
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()