Exobrain database model and migration management
Project description
exobrain-database
exobrain-database is a Python library that provides the SQLAlchemy ORM models, Alembic migration management,
and utility tools for the Exobrain platform database. It supports a multi-tenant architecture where each
organization has its own isolated PostgreSQL schema.
The package is distributed as a namespace package under exobrain.database, making it composable with
other exobrain.* packages.
Table of Contents
Installation
pip install exobrain-database
Or with uv:
uv add exobrain-database
Development
This project uses uv for dependency management and building.
Prerequisites: Python 3.12+ and uv
Setup:
git clone git@github.com:MyExobrain/exobrain-database.git
cd exobrain-database
uv sync --all-groups
Common tasks:
uv run pytest # Run tests
uv run pytest --cov=exobrain.database # Tests with coverage
uv run ruff check src tests # Lint
uv run ruff format src tests # Format
uv run mypy src # Type check
uv build # Build wheel + sdist
Add dependencies:
uv add package-name # Production
uv add --group dev package-name # Development
uv sync --upgrade # Update all
Project Structure
The source code lives under src/exobrain/database/ as a namespace package:
src/exobrain/database/
├── migrations/ # Alembic migration engine
│ ├── alembic.ini # Alembic configuration file
│ ├── env.py # Migration environment setup
│ ├── migration_manager.py # Public API: upgrade / downgrade per org schema
│ └── versions/ # Auto-generated migration scripts
├── model/ # SQLAlchemy ORM models
│ ├── base.py # Declarative base classes
│ ├── associations/ # Many-to-many association tables
│ ├── enums/ # Database enumeration types (config, currency, running states)
│ ├── general/ # Cross-organization models (copilots, permissions, roles,
│ │ # predefined actions/executions/risks, reasons)
│ └── org/ # Per-organization models (config, connections, dashboards,
│ # running actions/executions/risks, scopes, users)
└── tools/ # Reusable database utilities
├── jsonb_filter.py # Helper for filtering on JSONB columns
├── record_count.py # Efficient record counting queries
└── sql_query_logger.py # SQLAlchemy query logging utility
Key design decisions
- Multi-tenant schemas: each organization's data is isolated in a dedicated PostgreSQL schema
(e.g.
org_<id>). Migrations are applied per-schema viamigration_manager.upgrade(org_id). - Namespace package:
exobrain.databasehas no__init__.pyat theexobrainlevel, allowing otherexobrain.*packages to coexist in the same Python environment. py.typedmarker: the package ships type information and is fully typed (compatible with mypy in strict mode).- Build system: Uses
uvas the modern Python build & package manager.
Usage
Apply migrations for an organization
from uuid import UUID
from exobrain.database.migrations import migration_manager
org_id = UUID("12345678-1234-5678-1234-567812345678")
migration_manager.upgrade(org_id)
Use ORM models
from exobrain.database.model.general.role import Role
from exobrain.database.model.org.user import User
License
exobrain-database is distributed under a proprietary license. See LICENSE.md for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file exobrain_database-0.1.2.tar.gz.
File metadata
- Download URL: exobrain_database-0.1.2.tar.gz
- Upload date:
- Size: 59.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6298069244bb5d4241320e5e1bb457249e6c514fc78a9f74bbf312475264590
|
|
| MD5 |
f3b142b1df53234e1c854acdb9506104
|
|
| BLAKE2b-256 |
5ec773dda73df84d2e377912856b872d6520898fd781e5d6843c0aa3061093b9
|
File details
Details for the file exobrain_database-0.1.2-py3-none-any.whl.
File metadata
- Download URL: exobrain_database-0.1.2-py3-none-any.whl
- Upload date:
- Size: 141.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a096ae5dfdb97bab1bf837d53ce2e23187b511546e78b66523c1ac74ccc3ba5b
|
|
| MD5 |
a0bb0f7771e8925da6d5b50ab528751c
|
|
| BLAKE2b-256 |
a90b36f88e264e636fca51d7b0bd601b9c8ef718361ee759207625004d368540
|