jno*_*ord 2 python sql snowflake-cloud-data-platform jupyter-notebook
我继续收到错误“ProgrammingError: 002003 (42502): SQL 编译错误: 对象“表”不存在或未授权。我使用以下代码:
con = snowflake.connector.connect(
user = "user.name",
authenticator="externalbrowser",
warehouse = "ware house name",
database = "db name",
schema = "schema name"
)
cur.con.cursor()
sql = "select * from Table"
cur.execute(sql)
df = cur.fetch_pandas_all()
Run Code Online (Sandbox Code Playgroud)
当我在 Jupyter Notebook 中执行代码时,浏览器窗口会打开并验证我的信用,但是当它到达 sql 执行行时,错误会出现并告诉我该表不存在。当我在浏览器中打开 Snowflake 时,我可以看到该表确实存在于我的代码中的正确仓库、数据库和架构中。
还有其他人经历过这种情况吗?我是否需要授权我的用户能够通过 Python 和 Jupyter Notebook 访问此表?
您的会话可能没有分配角色(当前角色)。您可以在连接会话参数列表中添加角色,例如添加如下内容
role = 'RICH_ROLE',
Run Code Online (Sandbox Code Playgroud)
您可能需要考虑为您的用户设置默认角色。
ALTER USER userNameHere SET DEFAULT_ROLE = 'THE_BEST_ROLE';
Run Code Online (Sandbox Code Playgroud)
文档链接:https://docs.snowflake.com/en/sql-reference/sql/alter-user.html
另外,当所有其他方法都失败时,请使用完全限定的表名称,请注意,如果未设置角色,这不会有太大帮助:
sql = "select * from databaseName.schemaName.TableName"
Run Code Online (Sandbox Code Playgroud)