错误psycopg2.OperationalError:fe_sendauth:即使在postgres授权连接后也未提供密码

时间:2019-01-04 17:22:27

标签: python-3.x postgresql psycopg2

我的python脚本引发了“ psycopg2.OperationalError:fe_sendauth:未提供密码”错误,即使Postgre服务器正在授权连接。

我正在使用Python 3.5,psycopg2,Postgre 9.5,密码存储在.pgpass文件中。该脚本是使用flask-restful的restful flask应用程序的一部分。该脚本与Postgre服务器在同一主机上运行。

我正在按如下方式调用connect函数:

conn_admin = psycopg2.connect("dbname=database user=username")

执行脚本时,我得到以下堆栈跟踪:

   File "/var/www/flask/content_provider.py", line 84, in get_report
     conn_admin = psycopg2.connect("dbname=database user=username")
   File "/usr/local/lib/python3.5/dist-packages/psycopg2/__init__.py", line 130, in connect
     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: fe_sendauth: no password supplied

但是,当我查看Postgre服务器日志时,会看到以下内容(我使记录器也能够显示所有连接请求):

2019-01-04 18:28:35 SAST [17736-2] username@database LOG:  connection authorized: user=username database=database 

此代码在我的开发PC上运行良好,但是当我将其放在Unbuntu服务器上时,我开始遇到此问题。

要尝试发现问题,我已将密码硬编码到连接字符串中,但是仍然遇到相同的错误。

如果我直接在主机上的Python终端中执行以上代码,则无论连接字符串中是否包含密码,它都可以正常工作。

编辑: 我注意到的一件事是,在桌面上我使用Python 3.6.2,而在服务器上我使用Python 3.5.2。

1 个答案:

答案 0 :(得分:0)

尝试添加主机:

conn_admin = psycopg2.connect("dbname=database user=username host=localhost")