2013-03-28 79 views
3

工作当我尝试通过psycopg2有一点这样的代码连接到我的Postgres的服务器(运行蟒蛇为“用户名”):订货号连接通过psycopg2失败,但通过命令行

psycopg2.connect(database="apis_master") 

我得到一个错误

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

但是,当我在命令行运行psql的直的(以用户 “用户名”),如下所示:

psql -d apis_master 

我连接没有问题。

我看不出这两种连接方式有什么不同。我是否缺少psycopg2的一些配置选项?

回答

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' 
        ) 

这应该可以解决你的连接问题。

0

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