Skip to content

Releases: exasol/sqlalchemy-exasol

5.2.0

04 Nov 15:01
6e22f20

Choose a tag to compare

5.2.0 - 2025-11-04

This release drops the support for Python 3.9 as this Python version has reached its end-of-life in 2025-10. In consequence, the release also fixes security vulnerabilities by updating the dependencies.

With this release, in the Websocket-based dialect, it is possible for users to pass FINGERPRINT into
the connection URL to take advantage of an additional security feature in PyExasol version
1.x.

from sqlalchemy import create_engine
    url = "exa+websocket://A_USER:[email protected]:1234/my_schema?FINGERPRINT=C70EB4DC0F62A3BF8FD7FF22D2EB2C489834958212AC12C867459AB86BE3A028"
    engine = create_engine(url)
    query = "select 42 from dual"
    with engine.connect() as con:
        result = con.execute(sql.text(query)).fetchall()

Feature

  • #612: Updated CI tests to run against Exasol DB versions 7.1.30, 8.34.0, and 2025.1.0. Dropped support for Python 3.9.
  • #637: Added option to exa-websocket (Websocket-based dialect) to pass FINGERPRINT in the connection URL for additional security

Refactoring

  • #610: Altered string input into Connection.execute() to be handled properly with sql.text()
  • #614: Altered params input into Connection.execute() to be handled properly with dict
  • #616: Altered usage of MetaData which was binding to a connection to instead bind in the needed object or function
  • #617: Enacted warning for the deprecation of the autoload parameter and requirement of bind
  • #618: Switched DML & DDL executions from engine.connect() to engine.begin() usage
  • #637: Updated dependency declaration to pyexasol

Internal

  • #558: Updated to poetry 2.1.2 & relocked dependencies to resolve CVE-2025-27516
  • #548: Replaced pytest-exasol-itde with pytest-backend
  • Relocked dependencies to resolve CVE-2025-43859
  • #564: Replaced nox test:unit with that from exasol-toolbox
  • Reformatted files to meet project specifications
  • #588: Updated to exasol-toolbox 1.6.0 and relocked dependencies to resolve CVE-2025-50182, CVE-2025-50181, & CVE-2024-47081
  • #605: Removed non-ASCII unicode from templates & relocked dependencies to resolve CVE-2025-8869 (pip -> transitive dependency)
  • #640: Re-locked dependencies to resolve CVE-2025-8869 for transitive dependency pip

Dependency Updates

main

  • Updated dependency packaging:24.2 to 25.0
  • Updated dependency pyexasol:0.27.0 to 1.2.1
  • Updated dependency pyodbc:5.2.0 to 5.3.0

dev

  • Removed dependency black:25.1.0
  • Updated dependency exasol-integration-test-docker-environment:3.4.0 to 4.3.0
  • Updated dependency exasol-toolbox:0.20.0 to 1.12.0
  • Removed dependency furo:2024.8.6
  • Removed dependency isort:5.13.2
  • Removed dependency mypy:1.15.0
  • Updated dependency nox:2025.2.9 to 2025.10.16
  • Removed dependency pre-commit:4.1.0
  • Removed dependency pylint:3.3.4
  • Updated dependency pyodbc:5.2.0 to 5.3.0
  • Removed dependency pytest-cov:6.0.0
  • Added dependency pytest-exasol-backend:1.2.2
  • Removed dependency pytest-exasol-itde:0.2.1
  • Removed dependency pytest-history:0.3.0
  • Removed dependency pyupgrade:3.19.1
  • Removed dependency sphinx:7.4.7
  • Removed dependency sphinx-copybutton:0.5.2
  • Removed dependency urlscan:1.0.6

5.1.0

14 Feb 15:47
ea1a4fe

Choose a tag to compare

5.1.0 — 2025-02-14

🗑️ Removed

  • Dropped python 3.8 support
    • If you still depend on python 3.8 use the 5.x version line

🧰 Internal

  • Relocked dependencies
  • Removed pyexasol dbapi2 api shim
    (Now it is using the dbapi2 shim provided by the pyexasol project)
  • Remove testing against Exasol 7.0

📚 Documentation

  • Added support for multiversion documentation

5.0.0

02 Feb 08:11
0e8cda4

Choose a tag to compare

5.0.0 — 2024-02-02

🔧 Changed

  • Made pyodbc an optional dependency
  • Made websockets the default way to use sqlalchemy with exasol
  • Added deprecation warnings for pyodbc and trubodbc dialects

🧰 Internal

  • Relocked dependencies

4.6.3

21 Dec 08:03
2308a5a

Choose a tag to compare

4.6.3 — 2023-12-21

🔧 Changed

  • Changed pyodbc upper bound constraint
    (Allow larger upper bounds)

🧰 Internal

  • Relocked dependencies
  • Bumped versions of GitHub actions
  • Adjusted workflow triggers, to enable workflow runs for external branches

4.6.2

22 Nov 15:31
dfc5a55

Choose a tag to compare

4.6.2 — 2023-11-22

🔧 Changed

  • Loosened the SQLAlchemy dependency constraint to >=1.4,<2

4.6.1

06 Nov 07:36
cc513aa

Choose a tag to compare

4.6.0

18 Jul 09:18
f7be0ea

Choose a tag to compare

4.6.0 — 2023-07-18

✨ Features

  • Websocket based dialect have been stabilized and is officially supported now
    • 📘 Note: Inserting multiple empty row's, facilitating default settings currently isn't supported

🐞 Fixed

  • Fixed "prepared statements send the wrong types as parameters to the server" #341
  • Fixed "various SQLA compliance tests are failing for the websocket based dialect" #342

4.5.1

25 May 12:02
674a3e7

Choose a tag to compare

4.5.1 — 2023-05-25

🐞 Fixed

  • Fixed missing websocket driver package in release deliverables

4.5.0

24 May 13:07
1109c86

Choose a tag to compare

4.5.0 — 2023-05-24

  • Added Beta version of websocket based dialect

    🚨 Attention:

    This feature is currently in Beta, therefore it should not be used in production.
    We also recommend to have a look into the known issues, before you start using it.

    If you encounter any problem, please create an issue.
    With your feedback, we will be able stabilize this feature more quickly.

4.4.0

16 May 06:06
302b2e3

Choose a tag to compare

4.4.0 — 2023-05-16

🚨Attention

The turbodbc dependency was pinned to 4.5.4 due to issues with newer versions.

Failing tests in the SQLA compliance test suite, in regard to the turbodbc dialect won't be addressed until explicitly required/requested by users.

Note: It is also very likely that turbodbc support will be dropped in future versions.

🐞 Fixed

  • Fixed invalid implicit autocommit behaviour, for details see Issue-#335

✨ Added

  • Added websocket based dbapi2 compliant database driver

🔧 Changed

  • Updated pytest
  • Updated Dependencies
  • Loosened version constraints on 'packaging' dependency
  • Loosened dev dependency constraints

🧰 Internal

  • Changed changelog workflow
    • Removed scriv
    • Added unreleased section to track unreleased changes
  • Simplified workflows by factoring out python & poetry setup into an action
  • Added a internal category to the changelog fragment template
  • Added manual trigger for the gh-pages workflow
  • Removed workaround for outdated DB versions (for further details see #5)
  • Added exasol-integration-test-docker-environment as dev dependency