Snowflake Connector for Python release notes for 2023¶
This article contains the release notes for the Snowflake Connector for Python, including the following when applicable:
Behavior changes
New features
Customer-facing bug fixes
Snowflake uses semantic versioning for Snowflake Connector for Python updates.
Version 3.2.1 (October 3, 2023)¶
New features and updates¶
Added thread safety in telemetry when instantiating multiple connections concurrently.
Improved robustness in handling authentication changes.
Removed the
urllib3.contrib.pyopenssl
deprecation warning fromurllib3
library.Updated the
platformdirs
dependency to versions 2.6.0 through 4.0.0 from versions 2.6.0 through 3.9.0.
Bug fixes¶
Fixed a bug where URL, port, and path were ignored in AWS PrivateLink OCSP retry attempts.
Version 3.2.0 (September 7, 2023)¶
New features and updates¶
Made the
parser -> manager
renaming more consistent insnowflake.connector.config_manager
module.Added support for default values for
ConfigOptions
.Added
default_connection_name
toconfig.toml
file.
Bug fixes¶
None.
Version 3.1.1 (August 28, 2023)¶
New features and updates¶
Added support for RSAPublicKey when constructing
AuthByKeyPair
in addition to raw bytes.
Bug fixes¶
Fixed a bug in retry logic for OKTA authentication to refresh token.
Fixed a bug where the attribute
proxy_header
is missing inSOCKSProxyManager
when connecting through SOCKS5 proxy.
Version 3.1.0 (July 31, 2023)¶
New features and updates¶
Added a feature that lets you add connection definitions to the
connections.toml
configuration file. A connection definition refers to a collection of connection parameters, for example, if you wanted to define a connection named “prod”:[prod] account = "my_account" user = "my_user" password = "my_password"
By default, we look for the
connections.toml
file in the location specified in theSNOWFLAKE_HOME
environment variable (default:~/.snowflake
). If this folder does not exist, the Python connector looks for the file in theplatformdirs
location, as follows:On Linux:
~/.config/snowflake/
, but follows XDG settingsOn Mac:
~/Library/Application Support/snowflake/
On Windows:
%USERPROFILE%\AppData\Local\snowflake\
You can determine which file is used by running the following command:
python -c "from snowflake.connector.constants import CONNECTIONS_FILE; print(str(CONNECTIONS_FILE))"
Bumped cryptography dependency from <41.0.0,>=3.1.0 to >=3.1.0,<42.0.0.
Improved OCSP response caching to remove tmp cache files on Windows
Improved OCSP response caching to reduce the times of disk writing.
Added a parameter
server_session_keep_alive
inSnowflakeConnection
that skips session deletion when client connection closes.Tightened our pinning of
platformdirs
, to prevent their new releases breaking new versions of the connector.Allowed you to pass
type_mapper
tofetch_pandas_batches()
andfetch_pandas_all()
.Improved retry logic for okta authentication to refresh token if authentication gets throttled.
Added retry reasons for queries that are retried by the client.
Remove Python 3.7 support.
Improved error handling of connection reset error.
Bug fixes¶
Fixed a bug where
SFPlatformDirs
would incorrectly append application_name/version to its path.Fixed a bug where
write_pandas
fails when user does not have the privilege to create stage or file format in the target schema, but has the right privilege for the current schema.Worked around a segfault which sometimes occurred during cache serialization in multi-threaded scenarios.
Fixed a bug about deleting the temporary files happened when running PUT command.
Fixed a bug where
pickle.dump
segfaults during cache serialization in multi-threaded scenarios.
Version 3.0.4 (May 25, 2023)¶
New features and updates¶
Added the
json_result_force_utf8_decoding
connection parameter to force decoding JSON content in utf-8 when the result format is JSON.Bumped vendored library urllib3 to 1.26.15
Bumped vendored library requests to 2.29.0
Bumped pandas dependency from <1.6.0,>=1.0.0 to >=1.0.0,<2.1.0
Add support for Geometry types.
Bug fixes¶
Fixed a bug in which
cursor.execute()
could modify the argumentstatement_params
dictionary object when executing a multi-statement query.Fixed a bug prevented calling
SnowflakeCursor.nextset
before fetching the result of the first query if the cursor runs an async multi-statement query.Fixed a bug when
_prefetch_hook()
was not called before yielding results ofexecute_async()
.Fixed a bug where some
ResultMetadata
fields were marked as required when they were optional.Fixed a bug where bulk insert converts date incorrectly.
Version 3.0.3 (April 20, 2023)¶
New features and updates¶
Added a parameter that allows users to skip file uploads to stage if file exists on stage and contents of the file match.
Improved type hint of
SnowflakeCursor.execute
method.Improved GET logging to warn when downloading multiple files with the same name.
Bug fixes¶
Fixed a bug that prints error in logs for GET command on GCS.
Added a parameter that allows users to skip file uploads to stage if file exists on stage and contents of the file match.
Fixed a bug that occurred when writing a Pandas DataFrame with column names containing double quotes in
snowflake.connector.pandas_tool.write_pandas
.Fixed a bug that occurred when writing a Pandas DataFrame with binary data in
snowflake.connector.pandas_tool.write_pandas
.
Version 3.0.2 (March 23, 2023)¶
New features and updates¶
None.
Bug fixes¶
Fixed a bug of incorrect type hints of
SnowflakeCursor.fetch_arrow_all
andSnowflakeCursor.fetchall
.Improved logging to mask tokens in case of errors.
Fixed a bug where
snowflake.connector.util_text.split_statements
swallowed the final line break in the case when there are no space between lines.Fixed a memory leak in the logging module of the Cython extension.
Fixed a bug where the
put
command on AWS raised anAttributeError
when uploading a file composed of multiple parts.Fixed a bug where the
put
command on AWS raised anAttributeError
for file sizes larger than 200MB.
Version 3.0.1 (March 01, 2023)¶
New features and updates¶
Improved the robustness of OCSP response caching to handle errors in cases of serialization and deserialization.
Replaced the dependency on
setuptools
in favor of packaging.Updated
async_executes
method’s doc-string.Errors raised now have a query field that contains the SQL query that caused them when available.
Bug fixes¶
Fixed a bug where
AuthByKeyPair.handle_timeout
should pass keyword arguments instead of positional arguments when callingAuthByKeyPair.prepare
.Fixed a bug where MFA token caching would refuse to work until restarted instead of re-authenticating.
Version 3.0.0 (January 27, 2023)¶
BCR (Behavior Change Release) change¶
Fixed a bug where write_pandas did not use user-specified schemas and databases to create intermediate objects.
Previously, the write_pandas function created temporary objects in the currently-used database and schema and only put the final table (that was created or appended) in the user-specified database and schema. With this version, if the database or schema parameters for
write_pandas
are different than the currently-selected one, you need to make sure that the user who is executingwrite_pandas
has access to create/drop temporary stages, file formats, and tables with the schema referenced by thewrite_pandas
function.Snowflake recommends that you test any new driver version in pre-production environments before deploying to production environments. With this behavior change, you should give special attention to the scenario(s) listed above (i.e.
write_pandas
with database or schemas parameters that differ from the current context).
New features and updates¶
Bumped pyarrow dependency from >=8.0.0,<8.1.0 to >=10.0.1,<10.1.0
Bumped pyOpenSSL dependency from <23.0.0 to <24.0.0
During browser-based authentication, the SSO url is now printed before opening it in the browser
Increased the level of a log for when ArrowResult cannot be imported
Added a minimum MacOS version check when compiling C-extensions
Bug fixes¶
Fixed a bug where
write_pandas
did not use user-specified schema and database to create intermediate objectsFixed a bug where HTTP response code of 429 were not retried
Fixed a bug where MFA token caching was not working