通常,与postgres的SQLalchemy连接是这样的:
postgresql://scott:tiger@localhost/mydatabase
我想知道如何在理想情况下将SQLalchemy连接到包含密码的文件,例如pgpass文件。
这样的事情可能吗?
答案 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()
全部阅读,并根据个人标准选择所需记录。