[英]Connecting to Snowflake from Python using SSO and browser based sign-in
我正在尝试使用 SSO 连接到 Snowflake。 我正在运行以下脚本(从这里):
import snowflake.connector
ctx = snowflake.connector.connect(
user='<username>',
account='<accountname>',
authenticator='externalbrowser'
)
cs = ctx.cursor()
try:
cs.execute("SELECT current_version()")
one = cs.fetchone()
print(one[0])
finally:
cs.close()
我所做的唯一更改是将authenticator='externalbrowser'
参数(请参阅this )传递给connect
方法而不是密码。 (用户和帐户不能留空,所以我只是输入虚拟字符串)。
运行脚本后,它会显示以下消息,但不会出现浏览器选项卡:
向您的身份提供者发起登录请求。 浏览器 window 应该已经打开,您可以完成登录。 如果看不到,请检查现有浏览器 windows 或您的操作系统设置。 按 CTRL+C 中止并重试...
不确定这是否相关,但如果我将其放置几分钟,脚本会以以下错误结束:
snowflake.connector.network.RetryRequest:HTTP 403:禁止
我见过类似的问题,但还没有一个可以解决问题的答案。
<username>
可能应该是 email 地址。 请参阅https://community.snowflake.com或https://docs.snowflake.com/en/user-guide/admin-security-f
使用基于浏览器的 SSO,Snowflake 提供的客户端(例如,Snowflake JDBC 驱动程序)需要能够打开用户的 web 浏览器。 出于这个原因,雪花提供的客户端和使用它的客户端应用程序需要安装在用户的机器上。 如果运行在服务器上的代码使用 Snowflake 提供的客户端,则基于浏览器的 SSO 不起作用。
我假设您提供了正确的用户名和密码。 现在,如果您仍然收到此错误,请确保使用默认浏览器(python 程序正在访问)访问雪花帐户并保持 SSO session 处于活动状态。
现在运行您的 python 程序,它必须工作。
没有什么要求,您的代码参数看起来不错
authenticator='externalbrowser'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.