Database migration system for Python/SQLAlchemy projects
Project description
Installation
pip install dbwarden
Configuration
⚠️ Warning
This is an experimental package. Your fuckups are not mine to fix. You have been warned.
Even though this is an experimental package, I added lots of failsafes to protect the connected DB as to avoid issues.
Create warden.toml in your project:
# Default database
default = "primary"
# Database configurations
[database.primary]
database_type = "sqlite"
sqlalchemy_url = "sqlite:///./development.db"
[database.analytics]
database_type = "postgresql"
sqlalchemy_url = "postgresql://user:password@localhost:5432/analytics"
Basic Commands
| Command | Description |
|---|---|
dbwarden init |
Initialize migrations directory |
dbwarden database list |
List all configured databases |
dbwarden database add <name> |
Add a new database |
dbwarden make-migrations "name" |
Generate SQL from SQLAlchemy models |
dbwarden migrate |
Apply pending migrations |
dbwarden migrate -d <name> |
Migrate specific database |
dbwarden migrate --all |
Migrate all databases |
dbwarden rollback |
Revert the last migration |
dbwarden history |
Show migration history |
dbwarden status |
Show current status |
Multi-Database Support
Manage multiple databases from a single configuration:
# Add databases
dbwarden database add analytics --url "postgresql://user:pass@localhost:5432/analytics"
dbwarden database add legacy --url "mysql://user:pass@localhost:3306/legacy"
# List all databases
dbwarden database list
# Migrate specific database
dbwarden migrate -d analytics
# Migrate all databases (sequentially)
dbwarden migrate --all
SQLAlchemy Models
DBWarden automatically detects models in models/:
# models/user.py
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
name = Column(String(100))
email = Column(String(255), unique=True)
Complete Example
# 1. Initialize
dbwarden init
# 2. Create models in models/
# 3. Add more databases
dbwarden database add analytics --url "postgresql://user:pass@localhost:5432/analytics"
# 4. Generate migration from models
dbwarden make-migrations "create users table"
# 5. Apply
dbwarden migrate --verbose
# 6. Migrate all databases
dbwarden migrate --all
# 7. View history
dbwarden history
Supported Databases
| Database | Type Value | Features |
|---|---|---|
| PostgreSQL | postgresql |
SERIAL, TIMESTAMP, BYTEA |
| MySQL | mysql |
AUTO_INCREMENT, ENUM |
| SQLite | sqlite |
Built-in, zero config |
| ClickHouse | clickhouse |
Analytics, MergeTree |
| MariaDB | mariadb |
MySQL-compatible |
Docs
For more information, see DBWarden Docs or DBWarden DeepWiki page
License
This Project is Licensed under the MIT License. See LICENSE
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 dbwarden-0.3.6.tar.gz.
File metadata
- Download URL: dbwarden-0.3.6.tar.gz
- Upload date:
- Size: 465.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5781b61f8f2ec38ad873eae366bbc45f74d4fe1673f76947c235dc743c3fd6b
|
|
| MD5 |
256c6d4ceafae25c1702022191615cec
|
|
| BLAKE2b-256 |
b65ce4442db7f4e284b31bf038d6871c1c33891f0a576365710bf055e42f657d
|
File details
Details for the file dbwarden-0.3.6-py3-none-any.whl.
File metadata
- Download URL: dbwarden-0.3.6-py3-none-any.whl
- Upload date:
- Size: 46.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cdc0e33f841f80d037d613ff2a64b7ed793ae735386e4fe608b8e2ded1d1148c
|
|
| MD5 |
8e06d440b2762d714b04d63bf212d718
|
|
| BLAKE2b-256 |
63ec17c58e5f3144691fe9b8b74e7874ba2c2b8448ddec62474918114ffee6a3
|