2023 年 Snowflake Connector for Python 版本说明

本文包含 Snowflake Connector for Python 的版本说明,包括以下内容(如果适用):

  • 行为变更

  • 新功能

  • 面向客户的错误修复

Snowflake 对 Snowflake Connector for Python 更新使用语义版本控制。

版本 3.6.0(2023 年 12 月 7 日)

新功能和更新

  • 添加了对向量类型的支持。

  • 添加了对 private_key_fileprivate_key_file_pwd 连接参数的支持。

  • SnowflakeConnection 类添加了新的 expired 标志,跟踪连接的主令牌是否已过期。

  • 更改了 urlib3 版本 pin,仅影响低于 3.10 的 Python 版本。

错误修复

  • 修复了以下问题:设置日期格式并使用 Qmark 样式绑定时日期插入失败。

版本 3.5.0(2023 年 11 月 13 日)

新功能和更新

  • Snowflake Connector for Python 现在完全基于 apache arrow-nanoarrow 项目构建:

    • 将 wheel 文件大小减小至约 1MB,将安装大小减小至约 5MB。

    • 删除了对特定 pyarrow 版本的硬性依赖。

  • 为支持 nanoarrow 转换器,弃用了以下内容:

    • snowflake.connector.cursor.NanoarrowUsage 类。

    • NANOARROW_USAGE 环境变量。

    • snowflake.connector.cursor.NANOARROW_USAGE 模块变量。

错误修复

  • 无。

版本 3.4.1(2023 年 11 月 9 日)

新功能和更新

  • 更新了以下库:

    • 供应商提供的 urlib3 已更新到版本 1.26.18。

    • 供应商提供的 requests 已更新到版本 2.31.0。

错误修复

  • 无。

版本 3.4.0(2023 年 11 月 3 日)

新功能和更新

  • write_pandas 中添加了对 use_logical_type 的支持。

  • snowflake.connector.connect 添加了 backoff_policy 实参,允许配置失败请求重试之间的回退策略。请参阅 backoff_policies 模块中的可用实现。

  • snowflake.connector.connect 添加了 socket_timeout 实参,用于指定套接字读取和连接超时。

  • 移除了对 pycryptodomex 和 oscrypto 的依赖项。现在,所有连接都通过加密库 OpenSSL 进行,这已经是一个依赖项。

错误修复

  • 修复了 login_timeoutnetwork_timeout 行为。登录和网络请求的重试现在会在超时后正确停止。

  • 修复了供应商提供的 urllib 中 urllib3/urllib3#1878 (https://github.com/urllib3/urllib3/issues/1878) 问题的错误。

  • 修复了将超过 80 GB 的文件引入 S3 的问题。

版本 3.3.1(2023 年 10 月 18 日)

新功能和更新

  • 对于非 Windows 平台,添加了针对配置文件的文件权限不足的命令建议(chownchmod)。

错误修复

  • 修复了连接诊断无法完成证书检查的问题。

  • 修复了未编译 C 扩展时,Arrow 迭代器会导致 ImportError 的问题。

版本 3.3.0(2023 年 10 月 12 日)

新功能和更新

  • 更新为 Apache arrow-nanoarrow 项目,用于结果 Arrow 数据转换。

  • 引入了 NANOARROW_USAGE 环境变量,以允许在 nanoarrow 转换器和 arrow 转换器之间切换。有效值包括:

    • FOLLOW_SESSION_PARAMETER,使用服务器中配置的转换器。

    • DISABLE_NANOARROW,使用 arrow 转换器,覆盖服务器设置。

    • ENABLE_NANOARROW,使用 nanoarrow 转换器,覆盖服务器设置。

  • 引入了 snowflake.connector.cursor.NanoarrowUsage 枚举,其成员包括:

    • NanoarrowUsage.FOLLOW_SESSION_PARAMETER,使用服务器中配置的转换器。

    • NanoarrowUsage.DISABLE_NANOARROW,使用 arrow 转换器,覆盖服务器设置。

    • NanoarrowUsage.ENABLE_NANOARROW,使用 nanoarrow 转换器,覆盖服务器设置。

  • 引入了 snowflake.connector.cursor.NANOARROW_USAGE 模块变量,以允许在 nanoarrow 转换器和 arrow 转换器之间切换。它与 snowflake.connector.cursor.NanoarrowUsage 枚举结合使用。

备注

新引入的环境变量、枚举和模块变量是临时的。当数据转换完成从 arrow 到 nanoarrow 的转换后,它们将在未来的版本中删除。

错误修复

  • 无。

版本 3.2.1(2023 年 10 月 3 日)

新功能和更新

  • 在同时实例化多个连接时,在遥测中添加了线程安全性。

  • 改进了处理身份验证更改的可靠性。

  • urllib3 库中删除了 urllib3.contrib.pyopenssl 弃用警告。

  • platformdirs 依赖项从 2.6.0 至 3.9.0 版本更新到 2.6.0 至 4.0.0 版本。

错误修复

  • 修复了在 AWS PrivateLink OCSP 重试尝试中忽略 URL、端口和路径的错误。

版本 3.2.0(2023 年 9 月 7 日)

新功能和更新

  • snowflake.connector.config_manager 模块中的 parser -> manager 重命名更加一致。

  • 添加了对 ConfigOptions 默认值的支持。

  • config.toml 文件中添加了 default_connection_name

错误修复

  • 无。

版本 3.1.1(2023 年 8 月 28 日)

新功能和更新

  • 除原始字节之外,在构建 AuthByKeyPair 时添加了对 RSAPublicKey 的支持。

错误修复

  • 修复了 OKTA 身份验证刷新令牌重试逻辑中的一个错误。

  • 修复了通过 SOCKS5 代理连接时 SOCKSProxyManagerproxy_header 属性丢失的错误。

版本 3.1.0(2023 年 7 月 31 日)

新功能和更新

  • 添加了允许您将连接定义添加到 connections.toml 配置文件的功能。连接定义是指连接参数的集合,例如,如果要定义名为“prod”的连接:

    [prod]
    account = "my_account"
    user = "my_user"
    password = "my_password"
    
    Copy

    默认情况下,我们在 SNOWFLAKE_HOME 环境变量指定的位置(默认值: ~/.snowflake)查找 connections.toml 文件。如果此文件夹不存在,Python Connector 会在 platformdirs 位置查找该文件,如下所示:

    • 在 Linux 上: ~/.config/snowflake/,但遵循 XDG 设置

    • 在 Mac 上: ~/Library/Application Support/snowflake/

    • 在 Windows 上: %USERPROFILE%\AppData\Local\snowflake\

    您可以通过运行以下命令来确定使用哪个文件:

    python -c "from snowflake.connector.constants import CONNECTIONS_FILE; print(str(CONNECTIONS_FILE))"
    
    Copy
  • 将加密依赖项从 <41.0.0,>=3.1.0 升级到了 >=3.1.0,<42.0.0。

  • 改进了 OCSP 响应缓存,以移除 Windows 上的 tmp 缓存文件

  • 改进了 OCSP 响应缓存,以减少磁盘写入次数。

  • 添在 SnowflakeConnection 中添加了参数 server_session_keep_alive,用于在客户端连接关闭时跳过会话删除。

  • 收紧了对 platformdirs 的锁定,以防止它们的新版本破坏新版本的连接器。

  • 允许向 fetch_pandas_batches()fetch_pandas_all() 传递 type_mapper

  • 改进了 okta 身份验证的重试逻辑,以便在身份验证受到限制时刷新令牌。

  • 添加了客户端重试查询的重试原因。

  • 移除 Python 3.7 支持。

  • 改进了对连接重置错误的错误处理。

错误修复

  • 修复了 SFPlatformDirs 会错误地在其路径中追加应用程序名称/版本的错误。

  • 修复了当用户没有在目标架构中创建暂存区或文件格式的权限,但对当前架构具有正确的权限时,写入 write_pandas 会失败的错误。

  • 解决了在多线程场景中缓存序列化期间有时出现的分段错误。

  • 修复了运行 PUT 命令时删除临时文件的错误。

  • 修复了在多线程场景中缓存序列化期间出现的 pickle.dump 分段错误。

版本 3.0.4(2023 年 5 月 25 日)

新功能和更新

  • 添加了 json_result_force_utf8_decoding 连接参数,当结果格式为 JSON 时,可强制解码 JSON utf-8 内容。

  • 将供应商提供的库 urllib3 升级到了 1.26.15

  • 将供应商提供的库请求升级到了 2.29.0

  • 将 Pandas 依赖项从 <1.6.0,>=1.0.0 升级到了 >=1.0.0,<2.1.0

  • 添加了对几何图形类型的支持。

错误修复

  • 修复了在执行多语句查询时, statement_params 可能会修改实参 cursor.execute() 字典对象的错误。

  • 修复了在游标运行异步多语句查询时,阻止在获取第一个查询结果之前调用 SnowflakeCursor.nextset 的错误。

  • 修复了在产生 execute_async() 结果之前未调用 _prefetch_hook() 的错误。

  • 修复了某些 ResultMetadata 字段被标记为必填,而实际上它们为可选的错误。

  • 修复了批量插入会错误转换日期的错误。

版本 3.0.3(2023 年 4 月 20 日)

新功能和更新

  • 添加了一个参数,如果暂存区中存在文件并且文件内容匹配,则允许用户跳过文件上传到暂存区。

  • 改进了 SnowflakeCursor.execute 方法的类型提示。

  • 改进了 GET 日志,以便在下载多个同名文件时发出警告。

错误修复

  • 修复了一个错误,这个错误会导致 GCS 上的 GET 命令在日志中打印错误。

  • 添加了一个参数,如果暂存区中存在文件并且文件内容匹配,则允许用户跳过文件上传到暂存区。

  • 修复了在中 snowflake.connector.pandas_tool.write_pandas 写入列名包含双引号的 Pandas DataFrame 时出现的错误。

  • 修复了在 snowflake.connector.pandas_tool.write_pandas 中写入带有二进制数据的 Pandas DataFrame 时发生的错误。

版本 3.0.2(2023 年 3 月 23 日)

新功能和更新

  • 无。

错误修复

  • 修复了 SnowflakeCursor.fetch_arrow_allSnowflakeCursor.fetchall 的类型提示有误的错误。

  • 改进了日志记录,以在出现错误时掩码令牌。

  • 修复了在行与行之间没有空格时, snowflake.connector.util_text.split_statements 会吞掉最后换行符的错误。

  • 修复了 Cython 扩展的日志模块中的内存泄漏。

  • 修复了当上传由多个部分组成的文件时, AWS 上的 put 命令会引发 AttributeError 的错误。

  • 修复了当文件大小超过 200MB 时, AWS 上的 put 命令会引发 AttributeError 的错误。

版本 3.0.1(2023 年 3 月 1 日)

新功能和更新

  • 改进了 OCSP 响应缓存的鲁棒性,以便在序列化和反序列化时处理错误。

  • 将对 setuptools 依赖取代为对打包的依赖。

  • 更新了 async_executes 方法的 doc-string。

  • 引发的错误现在有一个查询字段,其中包含导致错误的可用 SQL 查询。

错误修复

  • 修复了调用 AuthByKeyPair.prepare 时, AuthByKeyPair.handle_timeout 应传递关键字实参而不是位置实参的错误。

  • 修复了 MFA 令牌缓存在重新启动前会拒绝工作,而不是重新进行身份验证的错误。

版本 3.0.0(2023 年 1 月 27 日)

BCR (行为变更版本)变更

  • 修复了 write_pandas 在创建中间对象时不使用用户指定的架构和数据库的错误。

    以前,write_pandas 函数会在当前使用的数据库和架构中创建临时对象,并且仅将最终表(已创建或追加)放在用户指定的数据库和架构中。在此版本中,如果 write_pandas 的数据库或架构参数与当前选择的参数不同,则需要确保执行 write_pandas 的用户有权使用 write_pandas 函数引用的架构创建/弃用临时暂存区、文件格式和表。

    Snowflake 建议先在预生产环境中测试任何新的驱动程序版本,然后再部署到生产环境。 通过此行为变更,应特别注意上述情况(即使用与当前上下文不同在数据库或架构参数写入 write_pandas )。

新功能和更新

  • 升级了 pyarrow 依赖项:>=8.0.0 <8.1.0 to >=10.0.1,<10.1.0

  • 升级了 pyOpenSSL 依赖项:从 <23.0.0 到 <24.0.0

  • 在基于浏览器的身份验证过程中,现在会先打印 SSO URL,然后再在浏览器中打开

  • 增加了无法导入 ArrowResult 时的日志级别

  • 添加了编译 C 扩展时的最低 MacOS 版本检查功能

错误修复

  • 修复了 write_pandas 未使用用户指定的架构和数据库创建中间对象的错误

  • 修复了 HTTP 响应代码为 429 不会重试的错误

  • 修复了导致 MFA 令牌缓存不起作用的错误

语言: 中文