使用 Snowpark 和 Snowflake Connector 创建 Snowflake 会话时出现 TypeError

问题描述 投票:0回答:3

我正在尝试使用 Python 中的 Snowpark 和 Snowflake Connector 创建 Snowflake 会话。但是,我遇到了 TypeError 并显示以下错误消息:

TypeError:config() 缺少 1 个必需的位置参数:'value'

以下是相关代码片段:

import pandas as pd
import boto3 as ab
from snowflake.snowpark.session import Session
import snowflake.connector as sc
import os
from configparser import ConfigParser

config = ConfigParser()
config.read(os.path.dirname(__file__) + str("/DBConn/config.ini"))
cs = config.sections()

connection_parameters = {
    "account": config.get(cs[0], 'account'),
    "user": config.get(cs[0], 'user'),
    "password": config.get(cs[0], 'password'),
    "role": config.get(cs[0], 'defaultrole'),  # optional
    "warehouse": config.get(cs[0], 'defaultwarehouse'),  # optional
    "database": config.get(cs[0], 'defaultdatabase'),  # optional
    "schema": config.get(cs[0], 'defaultschema')  # optional
}

sfSession = Session.builder.config(connection_parameters).create()
print(sfSession)
con = sc.connect(**connection_parameters)
print(con)

我已验证配置参数是否从 config.ini 文件中正确读取。但是,当在 Session.builder 上调用 config() 方法时,它会抛出 TypeError。看起来 config() 方法需要一个额外的位置参数,但我不确定它应该是什么。

我将非常感谢任何有关如何解决此问题的见解或建议。预先感谢您的帮助!

snowflake 文档中配置参数的参考 URL https://docs.snowflake.com/en/developer-guide/snowpark/python/creating-session

谢谢。

期望使用 Snowpark 从雪花建立会话

python snowflake-cloud-data-platform
3个回答
1
投票

config()
需要键值对,而不是字典,只需修改代码为每个键值对调用一次 config() ,而不是传递字典。

sessionBuilder = Session.builder

for key, value in connection_parameters.items():
    sessionBuilder.config(key, value)

sfSession = sessionBuilder.create()

0
投票

请确保您使用的是最新的 Snowpark 版本,并且传递带有键值对的字典(两者都必须是字符串!!)

Session.builder.config
应该识别作为唯一参数传递的字典,如文档中所述:

创建会话:

  1. 创建一个包含名称和值的 Python 字典 (dict) 连接到 Snowflake 的参数。
  2. 将此字典传递给 Session.builder.configs 方法以返回 具有这些连接参数的构建器对象。
  3. 调用构建器的create方法建立会话。

https://docs.snowflake.com/en/developer-guide/snowpark/python/creating-session


0
投票

如果您使用 dict 对象来创建 Snowpark 会话,请在 Session.builder

 中使用 
.configs
 方法而不是 
.config

方法

from snowflake.snowpark.session import Session
import os
from configparser import ConfigParser

config = ConfigParser()
config.read(os.path.dirname(__file__) + str("/DBConn/config.ini"))
cs = config.sections()

connection_parameters = {
    "account": config.get(cs[0], 'account'),
    "user": config.get(cs[0], 'user'),
    "password": config.get(cs[0], 'password'),
    "role": config.get(cs[0], 'defaultrole'),  # optional
    "warehouse": config.get(cs[0], 'defaultwarehouse'),  # optional
    "database": config.get(cs[0], 'defaultdatabase'),  # optional
    "schema": config.get(cs[0], 'defaultschema')  # optional
}

sfSession = Session.builder.configs(connection_parameters).create()
print(sfSession)


© www.soinside.com 2019 - 2024. All rights reserved.