2023 年 Snowflake Connector for Python 版本说明¶
本文包含 Snowflake Connector for Python 的版本说明,包括以下内容(如果适用):
行为变更
新功能
面向客户的错误修复
Snowflake 对 Snowflake Connector for Python 更新使用语义版本控制。
版本 3.6.0(2023 年 12 月 7 日)¶
新功能和更新¶
添加了对向量类型的支持。
添加了对
private_key_file
和private_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_timeout
和network_timeout
行为。登录和网络请求的重试现在会在超时后正确停止。修复了供应商提供的
urllib
中 urllib3/urllib3#1878 (https://github.com/urllib3/urllib3/issues/1878) 问题的错误。修复了将超过 80 GB 的文件引入 S3 的问题。
版本 3.3.1(2023 年 10 月 18 日)¶
新功能和更新¶
对于非 Windows 平台,添加了针对配置文件的文件权限不足的命令建议(
chown
或chmod
)。
错误修复¶
修复了连接诊断无法完成证书检查的问题。
修复了未编译 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 代理连接时
SOCKSProxyManager
中proxy_header
属性丢失的错误。
版本 3.1.0(2023 年 7 月 31 日)¶
新功能和更新¶
添加了允许您将连接定义添加到
connections.toml
配置文件的功能。连接定义是指连接参数的集合,例如,如果要定义名为“prod”的连接:[prod] account = "my_account" user = "my_user" password = "my_password"
默认情况下,我们在
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))"
将加密依赖项从 <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_all
和SnowflakeCursor.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 令牌缓存不起作用的错误