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.24.x (CI tests 0.24.0)
  • SQLAlchemy 2.x

Install the dialect and its HawDB dependency from PyPI:

python -m pip install sqlalchemy-hawdb

If you need to build HawDB 0.24.0 from source, build and install its wheel from the upstream release tag first:

git clone --branch v0.24.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.24.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.24.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.24.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.24.0
File Size Uploaded Provenance Actions
sqlalchemy_hawdb-0.24.0.tar.gz 8.2 kB With provenance Details for sqlalchemy_hawdb-0.24.0.tar.gz

Built distribution (wheel)

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

Total release size: 14.9 kB

Release files / sqlalchemy_hawdb-0.24.0.tar.gz

Download URL sqlalchemy_hawdb-0.24.0.tar.gz
Size 8.2 kB
Tags Source
SHA-256 checksum
How to use checksums
a2247057e82654cf280d86ff57d9c00bbcd13c0646ff4dd5ea2d00173866fad0
BLAKE2b-256 checksum
How to use checksums
312d145fdbaf13bf9a71fcdb62720d23f1b244020bce1d59457e3817ae6ae855
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 Nov 2, 2026.

Transparency log

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

Download URL sqlalchemy_hawdb-0.24.0-py3-none-any.whl
Size 6.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7ebf803d137147e3eeae1bf0a442d8ffce9124cf875dcf374759ec7af4e8410f
BLAKE2b-256 checksum
How to use checksums
b4672ec4d481009b5eb82879878fd10a470e8a974852766b3290249de920a269
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 Nov 2, 2026.

Transparency log

Security for sqlalchemy-hawdb 0.24.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.24.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 Nov 2, 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