Sqlalchemy有一个pgpass文件

时间:2014-03-13 14:05:29

标签: postgresql sqlalchemy flask

通常,与postgres的SQLalchemy连接是这样的:

postgresql://scott:tiger@localhost/mydatabase

我想知道如何在理想情况下将SQLalchemy连接到包含密码的文件,例如pgpass文件。

这样的事情可能吗?

1 个答案:

答案 0 :(得分:6)

.pgpass个文件的格式为:

host:port:database:user:password

如果您知道.pgpass文件中只有一个条目,则可以读取如下值:

from os.path import expanduser

with open(expanduser('~/.pgpass'), 'r') as f:
    host, port, database, user, password = f.read().split(':')

database_uri = 'postgresql://{}:{}@{}:{}/{}'.format(user, password, host, port, database)

有时数据库名称可能会在文件中列为*(表示全部),然后您必须明确指定数据库。此外,如果您有多条记录,则可以使用f.readlines()全部阅读,并根据个人标准选择所需记录。