python - 错误 psycopg2.OperationalError : fe_sendauth: no password supplied even after postgres authorized connection

标签 python python-3.x database postgresql psycopg2

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

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

我按如下方式调用连接函数:

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。

最佳答案

尝试添加主机:

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

关于python - 错误 psycopg2.OperationalError : fe_sendauth: no password supplied even after postgres authorized connection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54043466/

相关文章:

python - tensorflow :请使用 `rate` 而不是 `keep_prob` 。速率应设置为 `rate = 1 - keep_prob`

python - 如何向 df.boxplot 添加 y 轴标签

javascript - 无法在两个 Python aiortc 脚本之间完全建立 ICE 连接

sql - 仅授予对 postgreSQL 中一个模式的访问权限

python - python 中的 Zip 不适用于列表

python - 如何在 Python 中将指针指定为函数的参数?

python - 如何在 Windows 的 python 上运行 pip?

python - 如何从不等长列表的字典创建 DataFrame,并截断到特定长度?

php - 如何编写简单的数据库查询?

mysql - Django 数据库模型 - 消息和收件人 : many-to-many or many-to-one?