No project description provided
Project description
##########################################
__ __ _ _ ___ _
| \/ (_) __ _ _ __ __ _| |_ ___|_ _| |_
| |\/| | |/ _` | '__/ _` | __/ _ \| || __|
| | | | | (_| | | | (_| | || __/| || |_
|_| |_|_|\__, |_| \__,_|\__\___|___|\__|
|___/
##########################################
Handle database migrations with ease managing your database changes with simple SQL files. Make the migration process easier, more manageable and repeteable.
How does this work
Installation
pip install migrateit
Configuration
Configurations can be changed as environment variables.
# basic configuration
MIGRATEIT_MIGRATIONS_TABLE=MIGRATEIT_CHANGELOG
MIGRATEIT_MIGRATIONS_DIR=migrateit
# change the database connection variables
VARNAME_DB_URL=DB_URL
VARNAME_DB_HOST=DB_HOST
VARNAME_DB_PORT=DB_PORT
VARNAME_DB_USER=DB_USER
VARNAME_DB_PASS=DB_PASS
VARNAME_DB_NAME=DB_NAME
# database configuration
DB_URL=postgresql://postgres:postgres@localhost:5432/postgres
# -------- or ----------
DB_HOST=localhost
DB_PORT=5432
DB_NAME=postgres
DB_USER=postgres
DB_PASS=postgres
Usage
# initialize MigrateIt to create:
# - 'migrations' directory inside the MIGRATIONS_DIR
# - 'changelog.json' file inside the MIGRATIONS_DIR
# - first migration file with the migrateit table creation and rollback
migrateit init postgres
# create a new migration file
migrateit new first_migration
# add your sql commands to the migration file
echo "CREATE TABLE test (id SERIAL PRIMARY KEY, name VARCHAR(50));" > migrateit/migrations/0000_first_migration.sql
# show pending migrations
migrateit show
migrateit show -l
# run the migrations
migrateit migrate
# or run a given migration
migrateit migrate 0000
# rollback a migration
migrateit rollback 0000
Example
-- Migration 0000_user.sql
-- Created on 2025-05-15T19:55:18.711752
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
email TEXT NOT NULL UNIQUE,
given_name TEXT,
family_name TEXT,
picture TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Rollback migration
DROP TABLE IF EXISTS users;
Help
usage: migrateit new [-h] [-d [DEPENDECIES ...]] [--no-edit] [name]
positional arguments:
name Name of the new migration
options:
-h, --help show this help message and exit
-d, --dependecies [DEPENDECIES ...]
List of migration names that this migration depends on.
--no-edit Avoid opening the migration file in an editor after creation.
usage: migrateit migrate [-h] [--fake] [--update-hash] [name]
positional arguments:
name Name of the migration to run
options:
-h, --help show this help message and exit
--fake Fakes the migration marking it as ran.
--update-hash Update the hash of the migration.
usage: migrateit show [-h] [-l] [--validate-sql]
options:
-h, --help show this help message and exit
-l, --list Display migrations in a list format.
--validate-sql Validate SQL migration sintax.
usage: migrateit squash [-h] [-n NAME] start_migration [end_migration]
positional arguments:
start_migration Name of the first migration to squash from (inclusive).
end_migration Name of the last migration to squash to (inclusive). If not provided, the last migration is used.
options:
-h, --help show this help message and exit
-n, --name NAME Name of the new squashed migration file. If not provided, a default name will be generated.
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
migrateit-0.6.0.tar.gz
(25.3 kB
view details)
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
migrateit-0.6.0-py3-none-any.whl
(35.7 kB
view details)
File details
Details for the file migrateit-0.6.0.tar.gz.
File metadata
- Download URL: migrateit-0.6.0.tar.gz
- Upload date:
- Size: 25.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c1eef6c21519a7026115c618fb50cf15ab6add5070a94d74bd36e00406dc1736
|
|
| MD5 |
5146a26b113100897202f12733bca258
|
|
| BLAKE2b-256 |
b8ae68c2e368ff733238a0c89384899bc5e406777082875a9e07ad46c38a78c7
|
File details
Details for the file migrateit-0.6.0-py3-none-any.whl.
File metadata
- Download URL: migrateit-0.6.0-py3-none-any.whl
- Upload date:
- Size: 35.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ccc3fb5fb7afd87b28e12ddf399f746f2c1322bf8921a52000ec791a888140b2
|
|
| MD5 |
2bef36c546a0d3c3af5c73995eea2968
|
|
| BLAKE2b-256 |
4e2785d164cbdc4f95f5790280bea3501a688e4f2395fb1877ebf98542e4cd65
|