将雪花 table 拉入 Dataframe

Pulling Snowflake table into Dataframe

我继续收到错误“ProgrammingError: 002003 (42502): SQL 编译错误: 对象 'Table' 不存在或未授权。我正在使用以下代码:

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()

当我在 Jupyter Notebook 中执行代码时,浏览器 window 打开并验证我的身份,但是当它到达 sql 执行行时,错误出现并告诉我 table 不存在。当我在浏览器中打开 Snowflake 时,我可以看到 table 确实存在于我代码中的正确仓库、数据库和模式中。

有没有其他人遇到过这种情况?我是否需要授权我的用户才能通过 Python 和 Jupyter Notebook 访问此 table?

您的会话可能没有分配给它的角色(当前角色)。 您可以在连接会话参数列表中添加角色, 例如添加如下内容

role = 'RICH_ROLE',

您可能需要考虑为您的用户设置默认角色。

ALTER USER userNameHere SET DEFAULT_ROLE = 'THE_BEST_ROLE';

文档link:https://docs.snowflake.com/en/sql-reference/sql/alter-user.html

此外,当所有其他方法都失败时,使用完全限定的 table 名称,请注意,如果未设置角色,这将无济于事:

sql = "select * from databaseName.schemaName.TableName"