我读到有一种更安全的方法,可以连接到postgresql db,而无需使用 http://www.postgresql.org/docs/9.2/static/libpq-pgpass.html 在源代码中指定密码。但是不幸的是,我无法找到任何有关如何将其导入我的python程序以及如何使我的postgresql服务器使用此文件的示例。请帮忙。
最佳答案
您不会将其导入到Python程序中。 .pgpass
的要点是,它是受系统文件许可权约束的常规文件,并且psycopg2之类的库用来连接到Postgres的libpq驱动程序将在该文件中查找密码,而不是要求密码在源中。代码或提示。
另外,这不是服务器端文件,而是客户端文件。因此,在* nix框上,您将拥有一个~/.pgpass
文件,其中包含要建立的各种连接的凭据。
根据OP的评论进行编辑:
为了使psycopg2通过.pgpass
正确进行身份验证,需要发生两个主要事情:
psycopg2.connect
的字符串中指定密码.pgpass
文件中。 例如,要使此操作适用于 localhost 端口 5432 上的特定用户的所有数据库,您可以在该用户的
.pgpass
文件中添加以下行:localhost:5432:*:<username>:<password>
然后
connect
调用将具有以下形式:conn = psycopg2.connect("host=localhost dbname=<dbname> user=<username>")
然后,psycopg2使用的基础libpq驱动程序将利用
.pgpass
文件获取密码。