Azure Key Vault 提供的 Snowflake 连接字符串

Snowflake connection string provided by Azure Key Vault

这是我在 Python 中的 Snowflake 连接:

import snowflake.connector
ctx = snowflake.connector.connect(user='someuser@somedomain.com',
password='somepassword',
account='someaccount',
warehouse='somewarehouse',
database='somedb',
schema='someschema'
authenticator='someauth')

它工作正常,但现在我需要将我的连接详细信息存储在 Azure Key Vault 中,据我所知它将以字符串形式返回,我需要将其输入 snowflake.connector.connect()

所以我尝试将连接参数转换成字符串:

connection_string = "user=someuser@somedomain.com;password=somepassword;account=someaccount;authenticator=someauth;warehouse=somewarehouse;database = somedb"
ctx = snowflake.connector.connect(connection_string)

但收到错误消息:

TypeError                                 Traceback (most recent call last)
<ipython-input-19-ca89ef96ad7d> in <module>
----> 1 ctx = snowflake.connector.connect(connection_string)

TypeError: Connect() takes 0 positional arguments but 1 was given

我还尝试使用 ast 库从字符串中提取 python 字典并将其输入 snowflake.connector.connect(),但返回了相同的错误。

那么有什么办法可以解决吗?我在概念上漏掉了什么吗?

请检查给定的参考资料是否有帮助:

Snowflake连接器变量是分开的。我们可能需要用split方法分开。 Conn=Connection_string.split(‘;’) 并在雪花连接器中使用它。 注意:对于ACCOUNT参数,使用您的账户标识符,账户标识符不包括snowflakecomputing.com域名/后缀。 Snowflake 在创建 connection.So 时自动附加此内容,它可能适用于 snowflake 连接器。

所以尝试先给出连接变量,然后再使用雪花连接器和连接字符串中的变量。或者
通过在 Azure Key Vault 中保存完整的连接字符串(包括帐户名、用户名、密码、数据库、仓库详细信息),尝试在连接字符串中包含驱动程序和服务器。

示例连接字符串格式:

"jdbc:snowflake://<accountname>.snowflakecomputing.com/?user=<username>&db=<database>&warehouse=<warehouse>&role=<myRole>"

参考文献:

  1. Configuring the JDBC Driver — Snowflake Documentation
  2. 到 Snowflake 的 ODBC 连接字符串,用于访问直通查询 - 堆栈溢出
  3. azure-docs/connector-snowflake.md 位于 main · MicrosoftDocs/azure-docs · GitHub
  4. connect-snowflake-using-python-pyodbc-odbc-driver