IOMETE SQLAlchemy Dialect
raw JSON → 1.0.22 verified Sat May 09 auth: no python
SQLAlchemy dialect for IOMETE data lakehouse platform using Apache Arrow Flight SQL. Version 1.0.22, monthly releases. Enables connection to IOMETE from Python via SQLAlchemy engine.
pip install iomete-sqlalchemy Common errors
error sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:iomete ↓
cause iomete-sqlalchemy is not installed or entry point not registered.
fix
pip install iomete-sqlalchemy. Verify installation: pip list | grep iomete-sqlalchemy
error pyarrow.lib.ArrowIOError: Arrow Flight error: Failed to connect to remote server ↓
cause Host or port is incorrect, or network/firewall blocks the Flight SQL port.
fix
Double-check host:port. Ensure the IOMETE endpoint is reachable (test with telnet or curl).
Warnings
breaking Python >=3.9 is required; earlier versions are unsupported. ↓
fix Upgrade Python to 3.9 or later.
gotcha The connection string URL must not contain unsupported special characters in password. Percent-encode if needed. ↓
fix Use urllib.parse.quote for username/password: from urllib.parse import quote; engine_url = f'iomete://{quote(username)}:{quote(password)}@...'
deprecated The older 'iomete://' dialect prefix might be deprecated in favor of 'iomete+s3' or similar in future versions. ↓
fix Stay updated with changelog; no immediate change required.
Imports
- create_engine wrong
from iomete_sqlalchemy import create_enginecorrectfrom sqlalchemy import create_engine - Engine wrong
Engine is not exported directly from iomete-sqlalchemycorrectfrom sqlalchemy import Engine
Quickstart
from sqlalchemy import create_engine
import os
# Connection string: iomete://<username>:<password>@<host>:<port>/<database>
username = os.environ.get('IOMETE_USERNAME', 'your_username')
password = os.environ.get('IOMETE_PASSWORD', 'your_password')
host = os.environ.get('IOMETE_HOST', 'your_host')
port = os.environ.get('IOMETE_PORT', '443')
database = os.environ.get('IOMETE_DATABASE', 'default')
engine = create_engine(f'iomete://{username}:{password}@{host}:{port}/{database}')
with engine.connect() as conn:
result = conn.execute("SELECT 1")
print(result.fetchone())