【发布时间】:2020-12-31 18:52:45
【问题描述】:
我正在尝试在 sqlalchemy 中配置一个引擎,以使用 get_cluster_credentials api 连接来自 AWS IAM 角色的临时凭证。 当我这样做时,这是我得到'IAM:user_rw'的用户。当我将引擎字符串配置为时出现问题
engine_string = "postgresql+pygresql://{user}:{password}@{endpoint}:{port}/{dbname}".format(
user=cluster_creds['DbUser'],
password=cluster_creds['DbPassword'],
endpoint='big endpointstring',
port=8192,
dbname='small dbname')
我没有错误地创建引擎,但是在运行任何查询时我得到:致命:用户“IAM”的密码身份验证失败 测试用户并传入 DataGrip 它可以工作,所以很明显 sqlalchemy 正在让用户作为“IAM”而不是“IAM:user_rw”。
你知道如何强制 sqlalchemy 获取正确的用户吗?
【问题讨论】:
-
只需在
:之前添加一个\ 就像这样IAM\:user_rw -
我正在尝试这个,所以我将
user=cluster_creds['DbUser']更改为user="IAM\:user_rw,但现在引擎字符串显示为postgresql+pygresql://IAM\\:user_rw:etcetc。所以现在的错误是FATAL: password authentication failed for user "IAM\"。我怎样才能强制只解释一个\? -
您可以使用engine.URL.create为您构造连接URL/URI。
标签: python sqlalchemy amazon-redshift