为什么我在连接雪花和 python 时会出现此错误
Why do i get this error when i connect snowflake and python
这是我通过 python 连接到雪花时遇到的错误?
OperationalError: 250003: Failed to execute request: ("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])",)
我连接使用:
ctx = snowflake.connector.connect(
user='JoeBloggs',
password='pwd',
account='JoeBloggs',
database='DEV_DATA'
)
我是否需要输入端口、主机等其他参数?我是如何找到这些参数的?
我最初的想法是错误表示防火墙或代理问题。特别是,代理可能会拦截 Snowflake 的 SSL 证书并将其替换为自己的证书。解决此问题的最佳方法是确保证书在代理中受信任,并且根据 Snowflake 的文档配置代理,以便 Snowflake 证书可以通过。
下面的文档提供了有关将代理与 SnowSQL 结合使用的更多信息。您可以将带有发行者详细信息的错误传递给您的网络工程师,并可以请求将所需的 URL 列入白名单(下面的文档也概述了白名单要求)。您可以使用 SYSTEM$WHITELIST 函数获取所有 URL 以在您的帐户的代理或防火墙中列入白名单。
https://docs.snowflake.net/manuals/user-guide/snowsql-start.html#using-a-proxy-server
https://docs.snowflake.net/manuals/user-guide/hostname-whitelist.html
我认为您 'account' 的值需要修改。看起来您在那里使用的是您的用户名,但它应该是 Snowflake 帐户。这应该是您直接连接到 snowflakecomputing.com 部分之前的 URL 部分。例如,'xy12345.east-us-2.azure'.
First, install Snowflake python connector .pip3 install snowflake-python-connector.
Can you try with code below:
------------------------------------------------------
import snowflake.connector
PASSWORD = '*****'
USER = '<UNAME>'
ACCOUNT = '<ACCNTNAME>'
WAREHOUSE = '<WHNAME>'
DATABASE = '<DBNAME>'
SCHEMA = 'PUBLIC'
print("Connecting...")
con = snowflake.connector.connect(
user=USER,
password=PASSWORD,
account=ACCOUNT,
warehouse=WAREHOUSE,
database=DATABASE,
schema=SCHEMA
)
con.cursor().execute("USE WAREHOUSE " + WAREHOUSE)
con.cursor().execute("USE DATABASE " + DATABASE)
try:
result = con.cursor().execute("Select * from <TABLENAME>")
result_list = result.fetchall()
print(result_list)
finally:
con.cursor().close()
con.cursor().close()
---------------------------------------------------
这是我通过 python 连接到雪花时遇到的错误?
OperationalError: 250003: Failed to execute request: ("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])",)
我连接使用:
ctx = snowflake.connector.connect(
user='JoeBloggs',
password='pwd',
account='JoeBloggs',
database='DEV_DATA'
)
我是否需要输入端口、主机等其他参数?我是如何找到这些参数的?
我最初的想法是错误表示防火墙或代理问题。特别是,代理可能会拦截 Snowflake 的 SSL 证书并将其替换为自己的证书。解决此问题的最佳方法是确保证书在代理中受信任,并且根据 Snowflake 的文档配置代理,以便 Snowflake 证书可以通过。
下面的文档提供了有关将代理与 SnowSQL 结合使用的更多信息。您可以将带有发行者详细信息的错误传递给您的网络工程师,并可以请求将所需的 URL 列入白名单(下面的文档也概述了白名单要求)。您可以使用 SYSTEM$WHITELIST 函数获取所有 URL 以在您的帐户的代理或防火墙中列入白名单。
https://docs.snowflake.net/manuals/user-guide/snowsql-start.html#using-a-proxy-server https://docs.snowflake.net/manuals/user-guide/hostname-whitelist.html
我认为您 'account' 的值需要修改。看起来您在那里使用的是您的用户名,但它应该是 Snowflake 帐户。这应该是您直接连接到 snowflakecomputing.com 部分之前的 URL 部分。例如,'xy12345.east-us-2.azure'.
First, install Snowflake python connector .pip3 install snowflake-python-connector.
Can you try with code below:
------------------------------------------------------
import snowflake.connector
PASSWORD = '*****'
USER = '<UNAME>'
ACCOUNT = '<ACCNTNAME>'
WAREHOUSE = '<WHNAME>'
DATABASE = '<DBNAME>'
SCHEMA = 'PUBLIC'
print("Connecting...")
con = snowflake.connector.connect(
user=USER,
password=PASSWORD,
account=ACCOUNT,
warehouse=WAREHOUSE,
database=DATABASE,
schema=SCHEMA
)
con.cursor().execute("USE WAREHOUSE " + WAREHOUSE)
con.cursor().execute("USE DATABASE " + DATABASE)
try:
result = con.cursor().execute("Select * from <TABLENAME>")
result_list = result.fetchall()
print(result_list)
finally:
con.cursor().close()
con.cursor().close()
---------------------------------------------------