Universal migration CLI for Python apps
Project description
Migrator
The Universal Migration CLI for Python Apps
A lightweight, framework-agnostic database migration tool for Python projects using SQLAlchemy.
Migrator automates what Alembic requires developers to set up manually — making migrations as simple as Django's makemigrations and migrate, but flexible enough for Python any project.
✨ Features
- Zero boilerplate — one command to init and start migrating
- Auto-detect models — finds SQLAlchemy Base classes automatically
- Smart config — no need to manually edit alembic.ini or env.py
- Framework agnostic — works with FastAPI, Flask, or standalone SQLAlchemy
- Pythonic CLI — clean, readable, extensible commands
📦 Installation
# Quick install
curl -sSL https://raw.githubusercontent.com/Adelodunpeter25/migrator/main/install.sh | bash
# Or using pip
pip install migrator-cli
# Or using uv
uv add migrator-cli
🚀 Quick Start
Note: If you have an existing database with tables, see MIGRATION_GUIDE.md first.
1. Set up your database URL
Create a .env file:
DATABASE_URL=postgresql://user:password@localhost:5432/dbname
Or use settings.py, config.py, config.yaml, or config.toml.
2. Initialize migrations
migrator init
3. Create your first migration
migrator makemigrations "create user table"
4. Apply migrations
migrator migrate
📖 Commands
# Initialize migration environment
migrator init
# Create new migration
migrator makemigrations "add email to users"
# Apply migrations
migrator migrate
# Rollback migrations
migrator downgrade
# Show migration history
migrator history
# Show current revision
migrator current
# Mark database as migrated (for existing databases)
migrator stamp head
# Show migration status
migrator status
🏗️ Advanced Usage
Nested Project Structures
migrator init --base app.core.database:Base
migrator makemigrations "initial" --base app.core.database:Base
Async SQLAlchemy
# Your .env
DATABASE_URL=postgresql+asyncpg://user:pass@localhost/db
# Migrator auto-converts to: postgresql://user:pass@localhost/db
Custom Config
migrator init --config backend/settings.py
Verbose Mode
migrator init --verbose
🔧 Troubleshooting
Base not found? Use --base flag:
migrator init --base app.core.database:Base
Existing database? Use stamp:
migrator stamp head
🤝 Contributing
Contributions welcome! Submit a Pull Request.
📄 License
MIT License - see LICENSE file.
Project details
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 migrator_cli-0.3.0.tar.gz.
File metadata
- Download URL: migrator_cli-0.3.0.tar.gz
- Upload date:
- Size: 101.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
edeab13072747bc1700795751438eb49f5a12d55e39d1f4cfa4395bb57bc922b
|
|
| MD5 |
78da525358ad4f9a58244253874067c2
|
|
| BLAKE2b-256 |
e6ae12e165240a86a65ad23251809e21ab2823bf25b0df8a33e3fec0ae83f118
|
File details
Details for the file migrator_cli-0.3.0-py3-none-any.whl.
File metadata
- Download URL: migrator_cli-0.3.0-py3-none-any.whl
- Upload date:
- Size: 15.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0524eab776caeea45e6fef9b99bd167b94c11c9407676794301fa081cd89eaee
|
|
| MD5 |
045420f7a0c661676118502d76bc0e12
|
|
| BLAKE2b-256 |
71fdda74446c6ad26e25d1f2f36857f40e3336dcbb722e9ac86332422cf52eac
|