通过psycopg2,Ident连接失败,但通过命令行工作

时间:2013-03-28 21:22:51

标签: python postgresql authentication psycopg2

当我尝试通过psycopg2连接到我的postgres服务器时,使用一些像这样的代码(运行python作为“用户名”):

psycopg2.connect(database="apis_master")

我收到错误

psycopg2.OperationalError: FATAL:  Ident authentication failed for user "username"

但是当我直接从命令行运行psql时(作为用户“username”),如下所示:

psql -d apis_master

我连接没问题。

我看不出这两种连接方法有什么不同。我错过了psycopg2的一些配置选项吗?

2 个答案:

答案 0 :(得分:2)

您的命令行用户和您的python用户 不同。实例化psycopg2对象时,传递用户凭据:

db = psycopg2.connect(
                     host = 192.168.0.1, # example IP, use 'localhost' if local, otherwise the IP of the server where Postgre is located.
                     database = 'apis_master'
                     user = 'my_db_user',
                     password = 'my_db_password'
                     )

这可以解决您的连接问题。

答案 1 :(得分:0)

问题是在这个系统上运行了两个PGSQL实例。一个是8.4,没有配置为使用我的用户名识别,另一个是9.1并且有我的用户名。当psycopg2使用默认端口时,命令行psql自动选择在非标准端口上运行9.1。在psycopg2连接行中指定端口可以解决问题。