यह psycopg2 का व्यापक रूप से उपयोग करने वाला मेरा पहला प्रोजेक्ट है। जब भी कोई कनेक्शन प्रयास विफल रहता है, तो मैं psql त्रुटि संदेश निकालने का तरीका खोजने का प्रयास कर रहा हूं। मैं परीक्षण किया है कोड के नीचे सभी चर ठीक से सेट कर रहे हैं, जब भी एक त्रुटि स्थिति उत्पन्न होती है काम करेंगे हालांकि, (जैसे उपयोगकर्ता एक डेटाबेस है जो मौजूद नहीं चुनते हैं), अजगर मुझे दे देंगे निम्नलिखित: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'
क्या कनेक्शन विफल होने पर 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()
>>> आयात psycopg2 में कोई मदद कर सकता है >>> प्रिंट psycopg2 .__ संस्करण__ 2.0.14 (डीटी डीसी एक्सटी पीक्यू 3) ऐसा लगता है कि मैं पीछे कुछ संस्करण हूं। दुर्भाग्य से, ऐसा लगता है कि यह मेरे डिस्ट्रो (वैज्ञानिक लिनक्स) repos + epel के अनुसार सबसे अद्यतित संस्करण है। इसके साथ स्रोत मार्ग जाना पड़ सकता है। । । – sirjames2004
बस उत्सुकता से पहले, मैं psycopg2 को मैन्युअल रूप से अपग्रेड करने की संभावित खतरनाक खोज शुरू करने से पहले, psycopg2 के पुराने संस्करणों में psql कनेक्ट त्रुटि संदेश प्राप्त करने का कोई तरीका है, या क्या मैं कुछ गलत होने पर उन्हें एक सामान्य संदेश देने के साथ अटक गया हूं? – sirjames2004
@ sirjames2004 मुझे नहीं पता। लेकिन 'सेटअप' या' पीआईपी 'के साथ स्थापित करना काफी आसान है: http://initd.org/psycopg/install/। बस 'yum psycopg2' को पहले याद रखें। –