Questo è il mio primo progetto che utilizza psycopg2 estesamente. Sto cercando di trovare un modo per estrarre il messaggio di errore psql ogni volta che un tentativo di connessione fallisce. Ho provato il codice qui sotto funziona se tutte le variabili sono impostate correttamente, però ogni volta che si verifica una condizione di errore (ad esempio utente sceglie un database che non esiste), Python mi darà la seguente:Ottenere messaggi di errore dalle eccezioni di psycopg2
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'
Esiste un semplice metodo catch-all per catturare qualsiasi messaggio di errore che psql genera quando una connessione fallisce o devo scrivere eccetto i blocchi per più eccezioni psycopg2?
estratto dal mio script:
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()
>>> import psycopg2 >>> stampa psycopg2 .__ versione__ 2.0.14 (dt dec ext pq3) Sembra che ci siano alcune versioni dietro. Sfortunatamente, sembra che questa sia la versione più aggiornata in base al repos + epel della mia distribuzione (Scientific Linux). Potrebbe dover seguire il percorso di origine con questo. . . – sirjames2004
Solo curioso, prima di intraprendere una ricerca potenzialmente pericolosa per l'aggiornamento manuale di psycopg2, c'è un modo per ottenere i messaggi di errore di psql connect nelle versioni precedenti di psycopg2, o sono bloccato semplicemente dando loro un messaggio generico quando qualcosa va storto? – sirjames2004
@ sirjames2004 Non lo so. Ma l'installazione con 'setup' o' pip' è abbastanza semplice: http://initd.org/psycopg/install/. Ricordati di 'prima rimuovere psycopg2'. –