如何使用 Python(SSO 身份验证)在 Snowflake 中进行查询?

Posted

技术标签:

【中文标题】如何使用 Python(SSO 身份验证)在 Snowflake 中进行查询?【英文标题】:How to querying in Snowflake using Python (SSO Authentication)? 【发布时间】:2020-05-28 12:19:06 【问题描述】:

我尝试连接雪花(SSO 身份验证)并从表中获取数据。 但是,当我运行代码时,我可以在弹出的浏览器窗口中使用我的凭据登录并连接雪花,之后没有响应(程序既不终止也不提供结果)。 不知道哪里做错了,请帮忙。

'''

import snowflake.connector
# Connecting to Snowflake using SAML 2.0-compliant IdP federated authentication
conn = snowflake.connector.connect(
  user='G*****K',
  account='abcdf',
  authenticator='externalbrowser',
  warehouse='abcdf',
  database='abcdf',
  schema='abcdf'
)
cur = conn.cursor()
sql = "select * from abcdf.ACCT limit 10"
x=cur.execute(sql)
cur.close()
print(x) 
'''

【问题讨论】:

你能试试其他命令吗,比如“Select current_date;” 【参考方案1】:

我相信你在打印之前关闭了光标;

    try:
    cur.execute("SELECT col1, col2 FROM test_table ORDER BY col1")
    for (col1, col2) in cur:
        print('0, 1'.format(col1, col2))
    finally:
    cur.close() 

详情:https://docs.snowflake.com/en/user-guide/python-connector-example.html#using-cursor-to-fetch-values

【讨论】:

【参考方案2】:

查询结果存储在游标中。然后可以将游标的内容存储在局部变量中。

另外,最后关闭连接的最佳实践。

https://www.psycopg.org/docs/cursor.html

import snowflake.connector
# Connecting to Snowflake using SAML 2.0-compliant IdP federated authentication
conn = snowflake.connector.connect(
  user='G*****K',
  account='abcdf',
  authenticator='externalbrowser',
  warehouse='abcdf',
  database='abcdf',
  schema='abcdf'
)
cur = conn.cursor()
sql = "select * from abcdf.ACCT limit 10"
cur.execute(sql)
print(cur.fetchall())
cur.close()
conn.close()

【讨论】:

以上是关于如何使用 Python(SSO 身份验证)在 Snowflake 中进行查询?的主要内容,如果未能解决你的问题,请参考以下文章

多个应用程序上的 SSO 和 REST Api 身份验证

无需手动输入凭据即可进行 SSO 身份验证

使用 Keycloak SSO 在 2 个应用程序之间保持身份验证

上网行为管理AD域集成windos身份验证SSO单点登录

IBM Worklight 6.1 - 任何实现基于 SSO 的身份验证的参考资料?

在 keycloak 中跳过 kerberos sso 身份验证