英文:
Connecting to snowflake in Jupyter Notebook
问题
以下是您要翻译的代码部分:
import snowflake.connector
conn = snowflake.connector.connect(account='account',
user='user',
password='password',
database='db')
错误信息如下:
OperationalError Traceback (most recent call last)
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/connection.py:1125, in SnowflakeConnection._authenticate(self, auth_instance)
1124 try:
- 1125 auth.authenticate(
1126 auth_instance=auth_instance,
1127 account=self.account,
1128 user=self.user,
1129 database=self.database,
1130 schema=self.schema,
1131 warehouse=self.warehouse,
1132 role=self.role,
1133 passcode=self._passcode,
1134 passcode_in_password=self._passcode_in_password,
1135 mfa_callback=this._mfa_callback,
1136 password_callback=this._password_callback,
1137 session_parameters=this._session_parameters,
1138 )
1139 except OperationalError as e:
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/auth/_auth.py:250, in Auth.authenticate(this, auth_instance, account, user, database, schema, warehouse, role, passcode, passcode_in_password, mfa_callback, password_callback, session_parameters, timeout)
249 try:
-- 250 ret = this._rest._post_request(
251 url,
252 headers,
253 json.dumps(body),
254 timeout=auth_timeout,
255 socket_timeout=auth_timeout,
256 )
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/network.py:716, in SnowflakeRestful._post_request(this, url, headers, body, token, timeout, _no_results, no_retry, socket_timeout, _include_retry_params)
714 pprint(ret)
-- 716 ret = this.fetch(
717 "post",
718 full_url,
719 headers,
720 data=body,
721 timeout=timeout,
722 token=token,
723 no_retry=no_retry,
724 socket_timeout=socket_timeout,
725 _include_retry_params=_include_retry_params,
726 )
727 logger.debug(
728 "ret[code] = {code}, after post request".format(
729 code=(ret.get("code", "N/A"))
730 )
731 )
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/network.py:814, in SnowflakeRestful.fetch(this, method, full_url, headers, data, timeout, **kwargs)
813 while True:
-- 814 ret = this._request_exec_wrapper(
815 session, method, full_url, headers, data, retry_ctx, **kwargs
816 )
817 if ret is not None:
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/network.py:937, in SnowflakeRestful._request_exec_wrapper(this, session, method, full_url, headers, data, retry_ctx, no_retry, token, **kwargs)
936 if not no_retry:
-- 937 raise e
938 logger.debug("Ignored error", exc_info=True)
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/network.py:868, in SnowflakeRestful._request_exec_wrapper(this, session, method, full_url, headers, data, retry_ctx, no_retry, token, **kwargs)
867 return return_object
-- 868 this._handle_unknown_error(method, full_url, headers, data, conn)
869 TelemetryService.get_instance().log_http_request_error(
870 "HttpRequestUnknownError",
871 full_url,
(...)
876 retry_count=retry_ctx.cnt,
877 )
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/network.py:992, in SnowflakeRestful._handle_unknown_error(this, method, full_url, headers, data, conn)
987 logger.error(
988 f"Failed to get the response. Hanging? "
989 f"method: {method}, url: {full_url}, headers:{headers}, "
990 f"data: {data}"
991 )
-- 992 Error.errorhandler_wrapper(
993 conn,
994 None,
995 OperationalError,
996 {
997 "msg": f"Failed to get the response. Hanging? method: {method}, url: {full_url}",
998 "errno": ER_FAILED_TO_REQUEST,
999 },
1000 )
OperationalError: 250003: Failed to get the response. Hanging? method: post, url: https://xw81982.us-east4.gcp.snowflakecomputing.com.snowflakecomputing.com:443/session/v1/login-request?request_id=cedc0862-8df4-4cb1-a617-5216d2a16254&databaseName=Product&request_guid=435b4fa9-7df9-494c-b0b1-5238c26c032e
The above exception was the direct cause of the following exception:
OperationalError Traceback (most recent call last)
Cell In[6], line 2
1 import snowflake.connector
-- 2 conn = snowflake.connector.connect(account='xw81982.us-east4.gcp.snowflakecomputing.com',
3 user='03pes03',
4 password='Copper333,,',
5 database='Product')
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/__init__.py:51, in Connect(**kwargs)
50 def Connect(**kwargs) -> SnowflakeConnection:
-- 51 return SnowflakeConnection(**kwargs)
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/connection.py:304, in SnowflakeConnection.__init__(self, **kwargs)
302 this.converter = None
303 this.__set_error_attributes()
-- 304 this.connect(**kwargs)
305 this._telemetry = TelemetryClient(this._rest)
307 # get the imported modules from sys.modules
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/connection.py:571, in SnowflakeConnection.connect(this, **kwargs)
569 connection_diag.generate_report()
570 else:
-- 571 this.__open_connection()
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/connection.py:839, in SnowflakeConnection.__open_connection(this)
835 else:
836 # okta URL, e.g., https://<account>.
<details>
<summary>英文:</summary>
I have a very base script that works to connect to snowflake python connect but once I drop it in a jupyter notebook , I get the error below and really have no idea why?
import snowflake.connector
conn = snowflake.connector.connect(account='account',
user='user',
password='password',
database='db')
ERROR
OperationalError Traceback (most recent call last)
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/connection.py:1125, in SnowflakeConnection._authenticate(self, auth_instance)
1124 try:
-> 1125 auth.authenticate(
1126 auth_instance=auth_instance,
1127 account=self.account,
1128 user=self.user,
1129 database=self.database,
1130 schema=self.schema,
1131 warehouse=self.warehouse,
1132 role=self.role,
1133 passcode=self._passcode,
1134 passcode_in_password=self._passcode_in_password,
1135 mfa_callback=self._mfa_callback,
1136 password_callback=self._password_callback,
1137 session_parameters=self._session_parameters,
1138 )
1139 except OperationalError as e:
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/auth/_auth.py:250, in Auth.authenticate(self, auth_instance, account, user, database, schema, warehouse, role, passcode, passcode_in_password, mfa_callback, password_callback, session_parameters, timeout)
249 try:
--> 250 ret = self._rest._post_request(
251 url,
252 headers,
253 json.dumps(body),
254 timeout=auth_timeout,
255 socket_timeout=auth_timeout,
256 )
257 except ForbiddenError as err:
258 # HTTP 403
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/network.py:716, in SnowflakeRestful._post_request(self, url, headers, body, token, timeout, _no_results, no_retry, socket_timeout, _include_retry_params)
714 pprint(ret)
--> 716 ret = self.fetch(
717 "post",
718 full_url,
719 headers,
720 data=body,
721 timeout=timeout,
722 token=token,
723 no_retry=no_retry,
724 socket_timeout=socket_timeout,
725 _include_retry_params=_include_retry_params,
726 )
727 logger.debug(
728 "ret[code] = {code}, after post request".format(
729 code=(ret.get("code", "N/A"))
730 )
731 )
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/network.py:814, in SnowflakeRestful.fetch(self, method, full_url, headers, data, timeout, **kwargs)
813 while True:
--> 814 ret = self._request_exec_wrapper(
815 session, method, full_url, headers, data, retry_ctx, **kwargs
816 )
817 if ret is not None:
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/network.py:937, in SnowflakeRestful._request_exec_wrapper(self, session, method, full_url, headers, data, retry_ctx, no_retry, token, **kwargs)
936 if not no_retry:
--> 937 raise e
938 logger.debug("Ignored error", exc_info=True)
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/network.py:868, in SnowflakeRestful._request_exec_wrapper(self, session, method, full_url, headers, data, retry_ctx, no_retry, token, **kwargs)
867 return return_object
--> 868 self._handle_unknown_error(method, full_url, headers, data, conn)
869 TelemetryService.get_instance().log_http_request_error(
870 "HttpRequestUnknownError",
871 full_url,
(...)
876 retry_count=retry_ctx.cnt,
877 )
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/network.py:992, in SnowflakeRestful._handle_unknown_error(self, method, full_url, headers, data, conn)
987 logger.error(
988 f"Failed to get the response. Hanging? "
989 f"method: {method}, url: {full_url}, headers:{headers}, "
990 f"data: {data}"
991 )
--> 992 Error.errorhandler_wrapper(
993 conn,
994 None,
995 OperationalError,
996 {
997 "msg": f"Failed to get the response. Hanging? method: {method}, url: {full_url}",
998 "errno": ER_FAILED_TO_REQUEST,
999 },
1000 )
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/errors.py:290, in Error.errorhandler_wrapper(connection, cursor, error_class, error_value)
274 """Error handler wrapper that calls the errorhandler method.
275
276 Args:
(...)
287 exception to the first handler in that order.
288 """
--> 290 handed_over = Error.hand_to_other_handler(
291 connection,
292 cursor,
293 error_class,
294 error_value,
295 )
296 if not handed_over:
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/errors.py:348, in Error.hand_to_other_handler(connection, cursor, error_class, error_value)
347 elif connection is not None:
--> 348 connection.errorhandler(connection, cursor, error_class, error_value)
349 return True
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/errors.py:221, in Error.default_errorhandler(connection, cursor, error_class, error_value)
220 done_format_msg = error_value.get("done_format_msg")
--> 221 raise error_class(
222 msg=error_value.get("msg"),
223 errno=None if errno is None else int(errno),
224 sqlstate=error_value.get("sqlstate"),
225 sfqid=error_value.get("sfqid"),
226 query=error_value.get("query"),
227 done_format_msg=(
228 None if done_format_msg is None else bool(done_format_msg)
229 ),
230 connection=connection,
231 cursor=cursor,
232 )
OperationalError: 250003: Failed to get the response. Hanging? method: post, url: https://xw81982.us-east4.gcp.snowflakecomputing.com.snowflakecomputing.com:443/session/v1/login-request?request_id=cedc0862-8df4-4cb1-a617-5216d2a16254&databaseName=Product&request_guid=435b4fa9-7df9-494c-b0b1-5238c26c032e
The above exception was the direct cause of the following exception:
OperationalError Traceback (most recent call last)
Cell In[6], line 2
1 import snowflake.connector
----> 2 conn = snowflake.connector.connect(account='xw81982.us-east4.gcp.snowflakecomputing.com',
3 user='03pes03',
4 password='Copper333,,',
5 database='Product')
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/__init__.py:51, in Connect(**kwargs)
50 def Connect(**kwargs) -> SnowflakeConnection:
---> 51 return SnowflakeConnection(**kwargs)
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/connection.py:304, in SnowflakeConnection.__init__(self, **kwargs)
302 self.converter = None
303 self.__set_error_attributes()
--> 304 self.connect(**kwargs)
305 self._telemetry = TelemetryClient(self._rest)
307 # get the imported modules from sys.modules
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/connection.py:571, in SnowflakeConnection.connect(self, **kwargs)
569 connection_diag.generate_report()
570 else:
--> 571 self.__open_connection()
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/connection.py:839, in SnowflakeConnection.__open_connection(self)
835 else:
836 # okta URL, e.g., https://<account>.okta.com/
837 self.auth_class = AuthByOkta(application=self.application)
--> 839 self.authenticate_with_retry(self.auth_class)
841 self._password = None # ensure password won't persist
842 self.auth_class.reset_secrets()
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/connection.py:1099, in SnowflakeConnection.authenticate_with_retry(self, auth_instance)
1096 def authenticate_with_retry(self, auth_instance) -> None:
1097 # make some changes if needed before real __authenticate
1098 try:
-> 1099 self._authenticate(auth_instance)
1100 except ReauthenticationRequest as ex:
1101 # cached id_token expiration error, we have cleaned id_token and try to authenticate again
1102 logger.debug("ID token expired. Reauthenticating...: %s", ex)
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/connection.py:1170, in SnowflakeConnection._authenticate(self, auth_instance)
1168 except OperationalError as auth_op:
1169 if auth_op.errno == ER_FAILED_TO_CONNECT_TO_DB:
-> 1170 raise auth_op from e
1171 logger.debug("Continuing authenticator specific timeout handling")
1172 continue
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/connection.py:1147, in SnowflakeConnection._authenticate(self, auth_instance)
1145 while True:
1146 try:
-> 1147 auth_instance.handle_timeout(
1148 authenticator=self._authenticator,
1149 service_name=self.service_name,
1150 account=self.account,
1151 user=self.user,
1152 password=self._password,
1153 )
1154 auth.authenticate(
1155 auth_instance=auth_instance,
1156 account=self.account,
(...)
1166 session_parameters=self._session_parameters,
1167 )
1168 except OperationalError as auth_op:
File ~/Library/Python/3.8/lib/python/site-packages/snowflake/connector/auth/by_plugin.py:214, in AuthByPlugin.handle_timeout(***failed resolving arguments***)
212 if not self._retry_ctx.should_retry():
213 self._retry_ctx.reset()
--> 214 raise OperationalError(
215 msg=f"Could not connect to Snowflake backend after {self._retry_ctx.get_current_retry_count()} attempt(s)."
216 "Aborting",
217 errno=ER_FAILED_TO_CONNECT_TO_DB,
218 )
219 else:
220 logger.debug(
221 f"Hit connection timeout, attempt number {self._retry_ctx.get_current_retry_count()}."
222 " Will retry in a bit..."
223 )
OperationalError: 250001: Could not connect to Snowflake backend after 0 attempt(s).Aborting
</details>
# 答案1
**得分**: 0
**无法在0次尝试后连接到Snowflake后端**
假设:
**提供的帐户信息不正确。** - 它包含完整的URL
---
如果URL是:
https://xxxxx.region.cloud_provider.snowflakecomputing.com
那么帐户不应包括 `.snowflakecomputing.com`
import snowflake.connector
conn = snowflake.connector.connect(account='xxxxx.region.cloud_provider',
user='user',
password='password',
database='db')
在连接设置期间还建议显式列出 `role/warehouse`,否则将使用用户的默认设置。
<details>
<summary>英文:</summary>
> *Could not connect to Snowflake backend after 0 attempt(s)*
Hypothesis:
**Provided account is incorrect.** - It contains full url
---
If the url is:
https://xxxxx.region.cloud_provider.snowflakecomputing.com
then account should not include `.snowflakecomputing.com`
import snowflake.connector
conn = snowflake.connector.connect(account='xxxxx.region.cloud_provider',
user='user',
password='password',
database='db')
It is also recommended to explicitly list `role/warehouse` during the connection setup, otherwise user's default will be used.
</details>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论