我很难从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",
)
查看更多信息。