Skip to main content

SQLAlchemy JDBC/ODBC API

CI PyPI version Python versions License Downloads

Modern, type-safe SQLAlchemy dialect for JDBC and ODBC connections with native Python implementation.

Community Help Needed: We don't have access to all database systems for thorough testing. If you encounter issues connecting to a particular database, please raise an issue - we rely on community feedback to improve support for all databases.

Features

  • Automatic JDBC driver download from Maven Central (zero configuration!)
  • ODBC support for native database connectivity
  • Full SQLAlchemy integration (ORM, reflection, Alembic, Inspector API)
  • DataFrame integration (pandas, polars, pyarrow)
  • 18 database dialects (PostgreSQL, Oracle, MySQL, MariaDB, SQL Server, DB2, SQLite, OceanBase, GBase 8s, IBM iSeries, MS Access, Apache Phoenix)
  • Asyncio support for Core and ORM operations
  • HikariCP connection pooling for high-performance connections
  • Database X-Ray for query monitoring and performance tracing
  • Modern Python 3.10+ with full type hints
  • SQLAlchemy 2.0+ compatible

Installation

# Basic installation
pip install sqlalchemy-jdbcapi

# With DataFrame support
pip install sqlalchemy-jdbcapi[dataframe]

# With ODBC support
pip install sqlalchemy-jdbcapi[odbc]

JDBC Requirements

JDBC requires Java Runtime Environment (JRE) 8+:

# Check Java installation
java -version

# Install on Ubuntu/Debian
sudo apt-get install default-jre

# Install on macOS
brew install openjdk

Quick Start

JDBC (Recommended - Auto-Download)

from sqlalchemy import create_engine

# PostgreSQL - driver downloads automatically!
engine = create_engine('jdbcapi+postgresql://user:password@localhost/mydb')

# Oracle
engine = create_engine('jdbcapi+oracle://user:password@localhost:1521/ORCL')

# MySQL
engine = create_engine('jdbcapi+mysql://user:password@localhost/mydb')

ODBC (Alternative - No JVM)

from sqlalchemy import create_engine

# Requires OS-installed ODBC driver
engine = create_engine('odbcapi+postgresql://user:password@localhost/mydb')

Usage Example

from sqlalchemy import create_engine, text

engine = create_engine('jdbcapi+postgresql://user:pass@localhost/db')

with engine.connect() as conn:
    result = conn.execute(text("SELECT * FROM users"))
    for row in result:
        print(row)

Documentation

📖 Full Documentation (Recommended)

Quick Links

Supported Databases

Database JDBC ODBC Auto-Download Async
PostgreSQL
Oracle
MySQL
MariaDB
SQL Server
DB2
SQLite
OceanBase
GBase 8s
IBM iSeries
MS Access
Apache Phoenix

See Drivers Guide for detailed configuration.

What's New in 2.1

Version 2.1 adds major new capabilities:

  • New database dialects: GBase 8s, IBM iSeries, MS Access, Apache Phoenix/Avatica
  • Asyncio support: Full async/await for Core and ORM operations
  • HikariCP integration: High-performance connection pooling
  • Database X-Ray: Query monitoring, metrics, and performance tracing
  • Docker test suite: Functional tests with real databases

What's New in 2.0

Version 2.0 was a complete modernization:

  • Native JDBC implementation (replaced JayDeBeApi)
  • Added ODBC support
  • DataFrame integration (pandas, polars, pyarrow)
  • Full SQLAlchemy native dialect (ORM, reflection, Alembic)
  • Expanded from 3 to 12 database dialects
  • Modern Python 3.10+ with complete type hints
  • SQLAlchemy 2.0+ support

See CHANGELOG.md for migration guide.

Contributing

We welcome contributions! Please see:

Development

# Clone repository
git clone https://github.com/daneshpatel/sqlalchemy-jdbcapi.git
cd sqlalchemy-jdbcapi

# Install in development mode
pip install -e ".[dev]"

# Run tests
pytest tests/

# Run linting
ruff check src tests

See Contributing Guide for detailed instructions.

License

This project is licensed under the Apache License 2.0 - see LICENSE file for details.

Links

Support

Release files for sqlalchemy-jdbcapi 2.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sqlalchemy-jdbcapi 2.2.1
File Size Uploaded
sqlalchemy_jdbcapi-2.2.1.tar.gz 68.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sqlalchemy-jdbcapi 2.2.1
File Interpreter ABI Platform
sqlalchemy_jdbcapi-2.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 150.7 kB

Release files / sqlalchemy_jdbcapi-2.2.1.tar.gz

Download URL sqlalchemy_jdbcapi-2.2.1.tar.gz
Size 68.9 kB
Tags Source
SHA-256 checksum
How to use checksums
6cf836aa3645a8784e6ff1bb66e1d15fa17c06b476b1594327a1759ba74a84cf
BLAKE2b-256 checksum
How to use checksums
729a415897121cf8618c7f4c95a6845b8fdf97066aa9ebee4ab64bb1f3d86dea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release files / sqlalchemy_jdbcapi-2.2.1-py3-none-any.whl

Download URL sqlalchemy_jdbcapi-2.2.1-py3-none-any.whl
Size 81.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
634e17f8b0bd0920553a06fcea6a49e2f9d2f97980af0974fecf3e23ca4322f8
BLAKE2b-256 checksum
How to use checksums
46638f52fd457056698caba102a70ef471c6f669aead8b97f8ea99bb05445e34
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release history Release notifications | RSS feed

This release

2.2.1 This release

2 release files

2.1.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page