Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从psycopg2异常获取错误消息_Python_Postgresql_Psycopg2 - Fatal编程技术网

Python 从psycopg2异常获取错误消息

Python 从psycopg2异常获取错误消息,python,postgresql,psycopg2,Python,Postgresql,Psycopg2,这是我第一个广泛使用psycopg2的项目。我正在试图找到一种方法,以便在连接尝试失败时提取psql错误消息。我已经测试过,如果所有变量都设置正确,下面的代码将正常工作,但是每当出现错误情况时(例如,用户选择一个不存在的数据库),Python将提供以下信息: I am unable to connect to the database None Traceback (most recent call last): File "./duplicate_finder.py", line 163,

这是我第一个广泛使用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'

您正在捕获基类的所有异常
psycopg2.Error
。您的问题可能是
diag
属性在
psycopg2.5
中是新的。你的版本是什么

>>> print psycopg2.__version__
2.5.1 (dt dec pq3 ext)

当我试图捕获异常时,对于连接错误,e.pgerror始终为None。下面的代码块通过直接打印“e”来解决这个问题

try:
    conn = psycopg2.connect(conn_string)
except psycopg2.OperationalError as e:
    print('Unable to connect!\n{0}').format(e)
    sys.exit(1)
else:
   print('Connected!')
   # do stuff
例如,在密码身份验证失败的情况下:

Unable to connect!
FATAL:  password authentication failed for user "user"

我知道这个问题已经问了一年了,但我希望将来可能会对某人有所帮助

类“psycopg2.errors.InvalidCursorName”

关于Django。如果这是您的情况,请确保进行迁移,因为我使用的是Python 3.9(,)

除psycopg2外。错误为e:
log.error(f“{type(e)。{u module}.removesuffix('.errors')}:{type(e)。{u name}:{str(e.rstrip()}”)
如果连接:连接回滚()
其中
log


连接错误直接存在于psycopg2模块中,而语法错误存在于psycopg2.errors子模块中。每个psycopg2错误消息的末尾都有一个字符。

>>导入psycopg2>>>打印psycopg2。uuu版本uuuu 2.0.14(dt dec ext pq3)看起来我落后了几个版本。不幸的是,根据我的发行版(Scientific Linux)的repos+epel,这似乎是最新的版本。可能要用这个去源代码路径。好奇的是,在我着手手动升级psycopg2这一潜在危险的任务之前,有没有办法在psycopg2的旧版本中获取psql connect错误消息,或者当出现问题时,我只能给他们一个通用消息?@sirjames2004我不知道。但是使用
setup
pip
安装非常简单:。只需记住首先要
yum删除psycopg2
。@sirjames2004,psycopg2.5需要python2.5+,谢谢@Loaderon!
Unable to connect!
FATAL:  password authentication failed for user "user"