Skip to content

PyVELM v1.0.0

Release date: 2026-06-01

Major release: portable SQLAlchemy Core database layer, PostgreSQL and SQLite as supported production/dev backends, Laravel-style seeders, and declarative Schema migrations for module scripts.


Highlights

Database layer (pyvelm.database)

  • One connection API for the framework: pooling, dialect capabilities, and a psycopg-compatible adapter on Environment.conn.
  • PYVELM_DSN accepts SQLAlchemy URLs: postgresql+psycopg://…, postgres://… (normalised), sqlite:///….
  • Boot paths (pyvelm migrate, pyvelm serve, cron, create_app) use the layer instead of hand-rolled psycopg pools.

See Database layer (v1.0) and ADR 001.

SQLite (v1.0)

  • Greenfield install and model-driven schema sync on SQLite.
  • Bundled Postgres-only SQL migration scripts are skipped on SQLite.
  • Domain ilike uses LOWER(…) LIKE when the dialect has no ILIKE.

Ideal for local dev, CI, and embedded demos — not multi-worker production.

Seeders

  • Laravel-style Seeder classes under <module>/seeders/, discovered from seeders/__init__.py or manifest SEEDERS.
  • Run on install, upgrade, and Apps → Sync; idempotent by convention.
  • CLI: pyvelm db seed (see Modules → Seeders).

geo_data ships batched geography inserts and PYVELM_GEO_SEED_LEVEL for tests (countries vs full). See Geo data.

Schema migrations (declarative)

  • Module migrations can use Schema(env).create / .table with a Blueprint API (column builders, foreign_id, drop_column, …).
  • Documented in Migrations.

Multi-database routing (preview)

  • PYVELM_DATABASES, tenant selector UI, per-request pools — preview only in v1.0. v1.1+ targets MySQL/MariaDB portability first.
  • See Multi-DB routing (preview).

Other (since 0.26.x)

Recent 0.26 patches (workflow menu links, WEB_ROUTES on Apps install, font theming, console generators) are included in the 1.0 line. See v0.26.2v0.26.0.


Upgrade from 0.26.x

pip install -U "pyvelm==1.0.0"
  1. Point PYVELM_DSN at a SQLAlchemy URL (see multi-database.md).
  2. Run pyvelm db migrate (or your usual migrate entry point).
  3. Apps → Sync on modules that ship seeders (e.g. geo_data) if you rely on reference data.

Postgres remains the reference backend. SQLite is supported for new greenfield apps; test your modules on both if you ship portable DDL.


Documentation