Skip to main content

SQLAlchemy HawDB

sqlalchemy-hawdb provides a SQLAlchemy 2.x dialect for the embedded HawDB database. It uses HawDB's own PEP 249 driver and does not add a wire protocol or duplicate its DBAPI implementation.

Requirements

  • Python 3.11 or newer
  • HawDB Python binding 0.23.x (CI tests 0.23.0)
  • SQLAlchemy 2.x

Install the dialect and its HawDB dependency from PyPI:

python -m pip install sqlalchemy-hawdb

If HawDB 0.23.0 is not yet available from PyPI, build and install its wheel from the upstream release tag first:

git clone --branch v0.23.0 https://github.com/nowledge-co/hawdb.git
cd hawdb/bindings/python
python -m pip install maturin==1.15.0
maturin build --release --out dist
python -m pip install dist/*.whl

To install this checkout instead:

python -m pip install /path/to/sqlalchemy_hawdb

Connect

Use an absolute database directory path with four slashes:

from sqlalchemy import Column, Integer, MetaData, String, Table, create_engine

engine = create_engine("hawdb:////var/lib/my-app/knowledge")
metadata = MetaData()
records = Table(
    "records",
    metadata,
    Column("id", Integer, primary_key=True, autoincrement=False),
    Column("body", String(500), nullable=False),
)

metadata.create_all(engine)
with engine.begin() as connection:
    connection.execute(records.insert(), {"id": 1, "body": "Hello HawDB"})

HawDB creates the database directory itself; its parent directory must already exist.

Use hawdb:///:memory: for an in-memory database. Like SQLAlchemy's SQLite dialect, the in-memory engine keeps one database per thread. Add ?read_only=true to open an existing database read-only.

HawDB connections are thread-affine and hold their database path until closed. For file databases the dialect uses SQLAlchemy's NullPool: each SQLAlchemy connection closes its HawDB handle when returned. Do not keep multiple connections to the same database path open at once or pass a SQLAlchemy connection between threads. In-memory connections are kept per thread and must also be used serially within that thread.

Supported behavior

  • SQLAlchemy Core and ORM statements using HawDB's relational SQL subset
  • Positional $1, $2, ... binding through HawDB's native DBAPI driver
  • Explicit SQLAlchemy transactions mapped to HawDB commit and rollback
  • Table, column, primary key, unique constraint, and index reflection from HawDB's information_schema and pg_catalog views
  • The default public schema
  • HawDB-native scalar DDL types: integer types map to BIGINT, floating and numeric types to DOUBLE PRECISION, strings to TEXT, and binary values to BYTEA; SQLAlchemy string lengths and numeric precision are not enforced by HawDB

HawDB does not report affected row counts, so DBAPI rowcount is -1 for statements without a result set. Date and time types compile to TEXT; their values are encoded and decoded by SQLAlchemy's standard processors. Auto-generated identity columns, sequences, schema alteration, savepoints, and concurrent connections to one database path are not supported by this initial dialect.

Development

Install the project, the HawDB dependency, and the test tools:

python -m pip install -e '.[test]'
python -m pytest

GitHub Actions builds the source distribution and wheel, checks their metadata, builds HawDB v0.23.0 from its upstream release tag, and tests the installed dialect wheel on Python 3.11-3.13 for every push and pull request.

Publishing

.github/workflows/pypi.yaml publishes the tested source distribution and wheel when a GitHub Release is published. The release tag must match the version in pyproject.toml, for example v0.23.0. A manual workflow dispatch runs the same build and tests without uploading to PyPI.

Configure a PyPI Trusted Publisher for the sqlalchemy-hawdb project with:

  • Owner: nowledge-co
  • Repository: sqlalchemy-hawdb
  • Workflow: pypi.yaml
  • Environment: pypi

For the first release, configure a pending publisher in your PyPI account. The publish job uses GitHub's pypi environment and OIDC; no PyPI API token secret is required.

Metadata

Release files for sqlalchemy-hawdb 0.23.0

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-hawdb 0.23.0
File Size Uploaded Provenance Actions
sqlalchemy_hawdb-0.23.0.tar.gz 8.2 kB With provenance Details for sqlalchemy_hawdb-0.23.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for sqlalchemy-hawdb 0.23.0
File Interpreter ABI Platform Actions
sqlalchemy_hawdb-0.23.0-py3-none-any.whl Python 3 none any Details for sqlalchemy_hawdb-0.23.0-py3-none-any.whl

Total release size: 14.9 kB

Release files / sqlalchemy_hawdb-0.23.0.tar.gz

Download URL sqlalchemy_hawdb-0.23.0.tar.gz
Size 8.2 kB
Tags Source
SHA-256 checksum
How to use checksums
a68334c7cec39ec405e6cb05d914b80ca9ba243273e05304caeb98691d5b769c
BLAKE2b-256 checksum
How to use checksums
aad67689be12fb009885da66943ab83fcdfd9602f2389dbb3f5300aca7bd98ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.

Transparency log

Release files / sqlalchemy_hawdb-0.23.0-py3-none-any.whl

Download URL sqlalchemy_hawdb-0.23.0-py3-none-any.whl
Size 6.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d354e7e811312307ec3628f5efc023a00bec008a7cf03ef1672d0a9c579539c3
BLAKE2b-256 checksum
How to use checksums
062a17c1a97cdda531b688b555004ac5e0fc8e4471491620501016573e9b7b61
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.

Transparency log

Security for sqlalchemy-hawdb 0.23.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for sqlalchemy_hawdb-0.23.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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