Sqlalchemy有一个pgpass文件

Jim*_*mmy 3 postgresql sqlalchemy flask

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

postgresql://scott:tiger@localhost/mydatabase
Run Code Online (Sandbox Code Playgroud)

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

这样的事情可能吗?

lys*_*ing 6

.pgpass 文件中包含以下形式的记录:

host:port:database:user:password
Run Code Online (Sandbox Code Playgroud)

如果您知道.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)
Run Code Online (Sandbox Code Playgroud)

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