将 Ipython-sql 与雪花和外部浏览器身份验证器一起使用

Use Ipython-sql with snowflake and externalbrowser authenticator

在我的 jupyter notebook 中,我使用外部浏览器身份验证连接到 snowflake,如下所示:

conn = snowflake.connector.connect(
user='<my user>',
authenticator='externalbrowser',
account='<my account>',
warehouse='<the warehouse>')

这会打开一个外部浏览器进行身份验证,然后可以正常使用 pandas 读取 sql:

pd.read_sql('<a query>', conn)

想将它与 ipython sql 一起使用,但是当我尝试时:

%sql snowflake://conn.user@conn.account

我得到:

snowflake.connector.errors.ProgrammingError) Password is empty

好吧,我没有:) 有什么想法可以通过吗?

IPython-sql 连接字符串是 SQLAlchemy URL 标准,因此您可以执行以下操作:

%load_ext sql
from sqlalchemy import create_engine
from snowflake.sqlalchemy import URL

engine = create_engine(URL(
    account = '<account>',
    user = '<user>',
    database = 'testdb',
    schema = 'public',
    warehouse = '<wh>',
    role='public',
    authenticator='externalbrowser'
))
connection = engine.connect()

这将打开外部浏览器进行身份验证。