Registry / database / denodo-sqlalchemy

denodo-sqlalchemy

JSON →
library2.0.5pypypi✓ verified 86d ago

A SQLAlchemy dialect for Denodo, enabling SQLAlchemy ORM and Core to connect to Denodo Virtual DataPort. Current version 2.0.5, requires Python >=3.9 and SQLAlchemy >=2.0. Released as needed, with breaking changes in the major version bump from 1.x to 2.x due to SQLAlchemy 2.0 compatibility.

pip install denodo-sqlalchemy
INSTALL
IMPORT
SIG · DENODO-SQLALCHEMY
D
denodo-sqlalchemy
databasepythonv2.0.5
Install
3.4s avg
Import
637ms
Disk
52MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v2.0.5 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.95 runs
installs and imports cleanly · install 0.0s · import 0.674s · 51.8MB
glibc
py 3.103.95 runs
installs and imports cleanly · install 3.4s · import 0.600s · 53MB
52MB installed
● package 52MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

create_engine
from sqlalchemy import create_engine
from denodo_sqlalchemy import create_engine
create_engine is from SQLAlchemy, not the dialect package
DenodoDialect
from denodo_sqlalchemy import DenodoDialect
Correct import for the dialect class

Connect to Denodo using SQLAlchemy engine.

from sqlalchemy import create_engine, text import os user = os.environ.get('DENODO_USER', '') password = os.environ.get('DENODO_PASSWORD', '') host = os.environ.get('DENODO_HOST', 'localhost') database = os.environ.get('DENODO_DATABASE', 'test') engine = create_engine(f'denodo://{user}:{password}@{host}:9999/{database}') with engine.connect() as conn: result = conn.execute(text("SELECT 1")) print(result.fetchone())
Debug
Known issues
breakingdenodo-sqlalchemy 2.x requires SQLAlchemy >=2.0 and drops support for SQLAlchemy 1.x.
fix
Upgrade SQLAlchemy to >=2.0 and adjust code for SQLAlchemy 2.0 patterns (e.g., removed convert_unicode, future=True).
affects: >=2.0.0
gotchaThe dialect name in connection string is 'denodo' (lowercase), not 'denodosqlalchemy' or 'Denodo'.
fix
Use 'denode+pyodbc?' or 'denode://...' with 'denodo' prefix (e.g., denodo://user:pass@host:9999/db).
affects: all
gotchaRequires Java and a JDBC driver (Denodo's JDBC JAR) to be accessible on the CLASSPATH. Without it, jaydebeapi will raise 'JavaNotFoundError' or 'RuntimeError: Class not found'.
fix
Set CLASSPATH environment variable to include the Denodo JDBC JAR, or place it in the working directory.
affects: all
Errors
Common errors & fixes
sqlalchemy.exc.ArgumentError: Could not determine a dialect for "denodo"
The dialect 'denodo' is not registered or installed improperly.
fix
Ensure 'denodo-sqlalchemy' is installed: pip install denodo-sqlalchemy. Then import it at least once before creating engine.
jaydebeapi.JavaNotFoundError: The Java runtime could not be found.
JPype1 cannot locate Java installation.
fix
Install Java (JRE or JDK) and ensure JAVA_HOME environment variable is set correctly.
RuntimeError: Class not found: com.denodo.vdb.jdbcdriver.Driver
Denodo JDBC driver JAR is not in CLASSPATH.
fix
Download Denodo JDBC driver JAR and add its path to CLASSPATH environment variable.
Upgrade
Version history
2.0.5latest on PyPI · released Mar 26, 2026
Audit
Dependencies
sqlalchemyrequiredRequired: SQLAlchemy dialect interface
jaydebeapirequiredRequired: JDBC bridge for Denodo
jpype1requiredRequired: Java bridge (used by jaydebeapi)
Agent activity
9 hits · last 30 days
node
8
OpenAI (training)
1
Resources
denodo-sqlalchemy — pip install denodo-sqlalchemy · libregistry