python - 如何将雪花主键读入python
问题描述
这个问题与另一个问题有点相关:Get List of Primary Key Columns in Snowflake。
由于 INFORMATION_SCHEMA.COLUMNS 不提供有关主键的所需信息。并且当查询并行运行时,Snowflake 本身提出的方法(您将在其中描述表后跟 result_scan)是不可靠的。我正在考虑使用SHOW PRIMARY KEYs IN DATABASE
. 这在从 Snowflake 中查询数据库时非常有用。但是,一旦我尝试在 python 中执行此操作,我就会得到列名的结果,例如“内置函数 id”。这在动态生成 sql 语句时没有用。
我正在使用的代码如下:
SQL_PK = "SHOW PRIMARY KEYS IN DATABASE;"
snowflake_service = SnowflakeService(username=cred["username"], password=cred["password"])
snowflake_service.connect(database=DATABASE,role=ROLE, warehouse=WAREHOUSE)
curs = snowflake_service.cursor
primary_keys = curs.execute(SQL_PK).fetchall()
curs.close()
snowflake_service.connection.close()
有什么我做错了吗?甚至可以这样做吗?或者,当将这些查询作为一个字符串发送时,Snowflake 提供的解决方案是否足够可靠?尽管有许多表,但需要多次往返才能获取所需的所有数据。
解决方案
当查询并行运行时,您将在其中描述表后跟 result_scan,这是不可靠的
您可以使用information_schema.query_history_by_session搜索特定查询运行,然后使用 retrieved 引用结果集QUERY_ID
。
SHOW PRIMARY KEYS IN DATABASE;
-- find the newest occurence of `SHOW PRIMARY KEYS`:
SET queryId = (SELECT QUERY_ID
FROM TABLE(information_schema.query_history_by_session())
WHERE QUERY_TEXT LIKE '%SHOW PRIMARY KEYS IN DATABASE%'
ORDER BY ENDTIME DESC LIMIT 1);
SELECT * FROM TABLE(RESULT_SCAN($queryId));
推荐阅读
- azure-active-directory - 在 Azure OIDC 注销后,应该将什么内容安全策略标头值重定向回应用程序
- java - 如何在没有 PG 服务器和 Web 控制台的情况下启动 H2 数据库命令行?
- php - 基于帖子术语的 Wordpress 搜索
- django - 如何在 docker 中设置 celery beat?
- python - Python中if语句的问题
- linked-list - 我可以只使用 ALLOCATABLE 变量而不是指针在 Fortran 中创建链接列表吗?
- python - Python 在一行中查找单词并将其附加到一个新的文本文件中
- r - 从向量制作对称矩阵
- django - 如何使用 Django-quill-editor 从数据库中以 Quill 格式提取数据并提供给 Quill 表单
- python - Discord Python Bot 播放音乐 - url 是缺少的必需参数