如何使用 SSO (sqlalchemy) 将 python 连接到 Snowflake?
How to connect python to Snowflake using SSO (sqlalchemy)?
我最近不得不使用 Okta 启用 SSO,并且我在 Google Colab 中 运行 有几个 python 项目。
我正在尝试重新设计连接字符串,但似乎无法正确完成。
这是我在 SSO 之前的初始连接字符串:
from snowflake.sqlalchemy import URL
from sqlalchemy import create_engine
engine = create_engine(URL(
account = acc,
user = usr,
password = psw,
warehouse = whs,
role = rol
))
engine.connect()
这是我从研究中发现的,它应该与 SSO 一起使用:
from snowflake.sqlalchemy import URL
from sqlalchemy import create_engine
engine = create_engine(URL(
account = acc,
user = usr,
password = psw,
warehouse = whs,
role = rol
),
connect_args={
'authenticator': 'https://myokta.okta.com/',
}
)
engine.connect()
我试过了,但我收到了这个错误:
我也尝试使用 {'authenticator': 'externalbrowser'}
但因为我在 Google Colab 中,所以我收到一条错误消息 Unable to open a browser in this environment.
.
Web UI 为同一个用户工作,所以我只是在 Colab 中遇到了这个问题。
我应该如何连接?
编辑:
所以在做了一些研究之后,我发现因为我们启用了 MFA,所以这是行不通的。是否可以使用:
engine = create_engine(URL(
account = acc,
user = usr,
warehouse = whs,
role = rol,
authenticator = 'externalbrowser'
))
engine = engine.connect()
让 externalbrowser
成为同一笔记本中的 iframe?
我设法找到了解决方案。当 运行 engine.connect()
与 authenticator='externalbrowser'
和 Google Collab 无法打开单独的选项卡时,它会提供一个手册 link,点击后会打开另一个选项卡指向以 localhost
URL 为参数。然后我复制此 URL 并在返回笔记本时,将此 URL 粘贴到单元格中打开的输入框。
我最近不得不使用 Okta 启用 SSO,并且我在 Google Colab 中 运行 有几个 python 项目。
我正在尝试重新设计连接字符串,但似乎无法正确完成。
这是我在 SSO 之前的初始连接字符串:
from snowflake.sqlalchemy import URL
from sqlalchemy import create_engine
engine = create_engine(URL(
account = acc,
user = usr,
password = psw,
warehouse = whs,
role = rol
))
engine.connect()
这是我从研究中发现的,它应该与 SSO 一起使用:
from snowflake.sqlalchemy import URL
from sqlalchemy import create_engine
engine = create_engine(URL(
account = acc,
user = usr,
password = psw,
warehouse = whs,
role = rol
),
connect_args={
'authenticator': 'https://myokta.okta.com/',
}
)
engine.connect()
我试过了,但我收到了这个错误:
我也尝试使用 {'authenticator': 'externalbrowser'}
但因为我在 Google Colab 中,所以我收到一条错误消息 Unable to open a browser in this environment.
.
Web UI 为同一个用户工作,所以我只是在 Colab 中遇到了这个问题。
我应该如何连接?
编辑: 所以在做了一些研究之后,我发现因为我们启用了 MFA,所以这是行不通的。是否可以使用:
engine = create_engine(URL(
account = acc,
user = usr,
warehouse = whs,
role = rol,
authenticator = 'externalbrowser'
))
engine = engine.connect()
让 externalbrowser
成为同一笔记本中的 iframe?
我设法找到了解决方案。当 运行 engine.connect()
与 authenticator='externalbrowser'
和 Google Collab 无法打开单独的选项卡时,它会提供一个手册 link,点击后会打开另一个选项卡指向以 localhost
URL 为参数。然后我复制此 URL 并在返回笔记本时,将此 URL 粘贴到单元格中打开的输入框。