3.0.0 - 2026-10-16#
Summary#
In this major release, the following changes were made:
The Exasol telemetry tracking – anonymized usage tracking of the PyExasol library – was added.
To align more closely with PEP 249, the WebSocket DBAPI now returns values as Python types by default whenever possible. Some values were already returned as Python types before version 3.0; version 3.0 made this behavior more consistent:
Exasol type
Version < 3.0
Version >= 3.0
BOOLEANboolboolCHARstrstrDATEdatetime.datedatetime.dateDECIMAL(p, 0)intintDECIMAL(p, s)wheres > 0strdecimal.DecimalDOUBLEfloatfloatGEOMETRYstrstrHASHTYPEstrstrINTERVAL DAY TO SECONDstrExaTimeDeltaINTERVAL YEAR TO MONTHstrstrTIMESTAMPstrdatetime.datetimeTIMESTAMP WITH LOCAL TIME ZONEstrdatetime.datetimeVARCHARstrstrNanosecond precision in
TIMESTAMPvalues is truncated to Python microsecond precision.NULLvalues continue to be returned asNonefor all types.
WebSocket DBAPI executions now validate the
NLS_DATE_FORMATandNLS_TIMESTAMP_FORMATEXA_PARAMETERS against the ISO-compatible formats supported by PyExasol, reporting all invalid parameters together with correctiveALTER SESSIONguidance.WebSocket DBAPI connection operations that require an active connection now consistently reject calls made without one and translate underlying Exasol errors into the appropriate DBAPI exceptions.
WebSocket result metadata types are now exposed as
pyexasol.data_types.WebSocketDataType; the publicTypeCodealias remains available but displays using the canonical name.convert_websocket_to_pythonis the preferred name for converting WebSocket values to Python types;exasol_mapperremains available as a deprecated compatibility alias.ExaTimeDeltais also available frompyexasol.data_types, while the oldpyexasol.mappercompatibility module emits a deprecation warning on import.The deprecated
pyexasol.db2compatibility layer was removed; the maintainedexasol.driver.websocket.dbapi2interface remains available.
Security Issues#
This release fixes vulnerabilities by updating dependencies:
Dependency |
Vulnerability |
Affected |
Fixed in |
|---|---|---|---|
tornado |
GHSA-chx6-46f5-w4vp |
6.5.8 |
6.5.9 |
tornado |
GHSA-c2m8-h5v5-343r |
6.5.8 |
6.5.9 |
tornado |
GHSA-3hv7-mjh2-fv65 |
6.5.8 |
6.5.9 |
urllib3 |
PYSEC-2026-4177 |
2.7.0 |
2.8.0 |
urllib3 |
PYSEC-2026-4176 |
2.7.0 |
2.8.0 |
urllib3 |
PYSEC-2026-4175 |
2.7.0 |
2.8.0 |
virtualenv |
PYSEC-2026-4011 |
21.7.8 |
21.7.12 |
virtualenv |
PYSEC-2026-4012 |
21.7.8 |
21.7.11 |
virtualenv |
PYSEC-2026-4014 |
21.7.8 |
21.7.12 |
virtualenv |
PYSEC-2026-4013 |
21.7.8 |
21.7.13 |
virtualenv |
PYSEC-2026-4011 |
21.7.8 |
21.7.12 |
virtualenv |
PYSEC-2026-4012 |
21.7.8 |
21.7.11 |
virtualenv |
PYSEC-2026-4013 |
21.7.8 |
21.7.13 |
virtualenv |
PYSEC-2026-4014 |
21.7.8 |
21.7.12 |
Features#
#116: Added conversion support for
TIMESTAMP WITH LOCAL TIME ZONEvalues inconvert_websocket_to_python.#375: Integrated telemetry
Bugfixes#
#353: Fixed documentation inconsistencies in type hints and docstrings
#409: Restricted allowed formats for TIMESTAMP and DATE to ISO-formats
#415: Fixed a
KeyErrorwhen accessingcursor.descriptionfor result sets containingHASHTYPEcolumns by addingHASHTYPEtoTypeCode#419: Fixed exact negative-day intervals in
ExaTimeDeltabeing formatted with a day count one too low#429: Fixed
Cursor.executemanysilently accepting rows with more parameters than the prepared statement columns#436: Fixed WebSocket DBAPI result conversion by setting the default
fetch_mappertoconvert_websocket_to_python
Refactorings#
#409: Refactored connection method handling around
_requires_connectionso connection checks and Exasol-to-DBAPI exception translation are applied consistently#415: Removed the
pyexasol.db2compatibility module, which was deprecated in July 2024#417: Moved DECIMAL, DATE, and TIMESTAMP conversion helpers into
pyexasol.data_types.to_pythonand improved unit test coverage#238: Moved DSN parsing and connection tests from integration tests to unit tests, so they no longer require a running Docker database
#419: Centralized WebSocket metadata types and moved mapper implementations into
pyexasol.data_types.#429: Centralized data-type test cases across unit and integration tests and renamed
exasol_mappertoconvert_websocket_to_python#434: Refactored data-type test cases to share SQL templates and expected values across fetch-mapper and cursor integration tests
Dependency Updates#
main#
Updated dependency
cryptography:50.0.1to50.0.2Added dependency
exasol-telemetry-client:0.2.1Updated dependency
polars:1.44.1to1.44.2
dev#
Updated dependency
exasol-toolbox:10.5.0to11.0.0