如何从Azure数据库块编写pandas df到snowflake ?



我很难从Azure数据库中给snowflake写信。

我有下面的代码,我试图用它来写一个熊猫df到雪花表,但我不断得到我的用户名或密码是不正确的。

我已经尝试了用户名和密码登录在我的浏览器,它的工作没有问题。此外,我还尝试使用与此帐户关联的电子邮件地址并得到相同的错误。我做错了什么?:

import pandas as pd
import sqlalchemy as sa
from sqlalchemy import *
import snowflake.connector
from snowflake.connector.pandas_tools import pd_writer

def savedfToSnowflake(df):
engine = snowflake.connector.connect(
user='xxxx',
password='xxxx',
role='xxxx',
account='xxxx',
warehouse='xxxx',
database='xxxx',
schema='xxxx',
autocommit=xxxx
)
try:
connection = engine.connect()
print("Connected to Snowflake ")
df3.to_sql('table_name', con=connection, index=False,
if_exists='append')  # make sure index is False, Snowflake doesnt accept indexes
print("Successfully saved data to snowflake")
except Exception as ex:
print("Exception occurred {}".format(ex))
#     finally:
#         # close connection
#         if connection:
#             connection.close()
#         if engine:
#             engine.dispose()

def main():
savedfToSnowflake(df3)

if __name__ == '__main__':
main()

如果您通过SSO提供商在浏览器中登录雪花,即单击"使用AzureAD登录",而不是输入雪花的用户名和密码,那么您就没有可以使用此连接命令的雪花用户名和密码。

Snowflake有用户,以及作为该用户进行身份验证的方法。通常有3种身份验证方法:

  • 雪花用户名/密码
  • 雪花RSA密钥
  • 由Microsoft Azure AD、Okta等联合的SSO…

您可以与您的Snowflake管理员讨论如何为您的用户获取用户名/密码或RSA密钥设置,以允许您以这种方式连接。或者,根据你正在使用的编程环境,你可以使用"外部浏览器"身份验证方法。

engine = snowflake.connector.connect(
user="<login_name>", #You can get it by executing in UI: desc user <username>;
account="<account-name>", #Add all of the account-name between https:// and snowflakecomputing.com
authenticator="externalbrowser",
)

查看更多信息。

最新更新