etlantic-sql
SQLite and PostgreSQL reference SQL execution plugin for
ETLantic 0.43. Install when
pipelines need Profile(sql_engine="sql"), SQL→SQL fusion, or Experimental
postgresql source/sink/storage connectors. Keep the pin matched to core.
Note: This plugin and ETLantic core use Beta classifiers for documented single-tenant pilots. Classifiers are not an enterprise SLA.
Install
pip install 'etlantic-sql==0.55.0'
# pip install 'etlantic==0.55.0'
export ETLANTIC_SQL_URL=postgresql+psycopg://user:pass@localhost:5432/etlantic
# Or use SQLite:
# export ETLANTIC_SQL_URL=sqlite+pysqlite:///:memory:
Uses SQLAlchemy Core. Driver dependencies stay out of etlantic core.
Wiring
from etlantic import Profile
Profile(name="sql-prod", sql_engine="sql")
The etlantic.sql_plugins entry point named sql registers
etlantic_sql:create_plugin. Profiles select it with sql_engine="sql";
keep connection URLs in environment-backed configuration or secret providers,
not in plans.
Prefer @Transformation.portable with
portable_transform_policy="require"; the compiler lowers the qualified
baseline to typed, parameterized SQL. Register
@Transformation.implementation("sql") only when dialect-specific behavior
outside that baseline is required. Native handlers take RelationRef inputs
and return SQL query handles (not fetched rows); they are tied to SQL and are
not eligible for adaptive execution.
Capabilities
- SQL→SQL fusion without intermediate Python row fetch
- Durable run-scoped staging tables (not session TEMP)
- Insert-select / CTAS-style publication
- Fail-closed planning when required capabilities are missing
SQLite and PostgreSQL are Tier A in 0.33. MERGE / upsert is advertised only
for PostgreSQL (sql_merge=True, INSERT … ON CONFLICT); SQLite remains
sql_merge=False and fails closed when merge is required.
Inference target mode reference (0.55)
SQLiteTableTarget is a separate, explicit reference adapter for an existing
SQLite table. It inspects declared columns, primary keys, and configured
partition columns without reading rows. Its transactional write_records
method executes append, overwrite, merge, upsert, and partition replacement
only when the table advertises the requested mode and its revision still
matches. This adapter does not change the SQL engine capability setting above.
import sqlite3
import etlantic as etl
from etlantic_sql import SQLiteTableTarget
connection = sqlite3.connect("orders.db")
target = SQLiteTableTarget(
connection, "orders", identity="orders", partitions=("order_day",)
)
observation = etl.inspect_target(target)
Connector capability matrix (0.38 Experimental)
Source/sink/storage entry points (postgresql) implement
etlantic.connectors protocols. CI uses an in-memory SQLite fake; live
PostgreSQL remains the intended production dialect for the SQL plugin.
| Capability | Source | Sink | Storage | Notes |
|---|---|---|---|---|
source.batch_snapshot |
✓ | Bounded table read | ||
source.schema_discovery |
✓ | ✓ | Row-free field inspect | |
source.statistics_bounded |
✓ | ✓ | Row estimate only | |
write.append |
✓ | Transactional | ||
write.overwrite |
✓ | DELETE + INSERT | ||
write.merge |
✓ | ON CONFLICT (PG / sqlite fake) |
||
publication.atomic |
✓ | Commit / rollback | ||
transactions |
✓ | Autocommit-off path | ||
reconciliation |
✓ | query_id evidence |
||
idempotency |
✓ | ✓ | Declared |
Entry points: etlantic.source_connectors / sink_connectors /
storage_connectors → postgresql.
Examples
python examples/sql_to_sql.py
python examples/sql_boundary_hybrid.py
python examples/sql_transactional_write.py
python examples/sql_failure_recovery.py
Links
SQL tutorial · SQL hello · Source · Issues
Metadata
Release files for etlantic-sql 0.55.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| etlantic_sql-0.55.0.tar.gz | 57.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| etlantic_sql-0.55.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 123.1 kB
Release files / etlantic_sql-0.55.0.tar.gz
| Download URL | etlantic_sql-0.55.0.tar.gz |
|---|---|
| Size | 57.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
71d1d740636a9337bd8ed51d54f5739869c200e6e75613b43f9aa3e383cb175d
|
|
BLAKE2b-256 checksum How to use checksums |
250746827507649a9b4edc80999959990f53b0c6cd9c319995de1185951061a9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.0 {"installer":{"name":"uv","version":"0.12.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / etlantic_sql-0.55.0-py3-none-any.whl
| Download URL | etlantic_sql-0.55.0-py3-none-any.whl |
|---|---|
| Size | 65.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
afd094097f18e75368f36fb23e974b345d38b3e2e91c863d290f98de2dd89fc7
|
|
BLAKE2b-256 checksum How to use checksums |
42e9c0fbdf953196f97f8f2a952e0b114161c7045159b76e1c801559906e82d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.0 {"installer":{"name":"uv","version":"0.12.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|