No project description provided
Project description
Base Migrator
Liquibase's almost compatible tool that works very similary, but just using only Python code.
Installation
To use at a MySQL database:
$ pip install basemigrator[mysql]
To use at a PostgreSQL database:
$ pip install basemigrator[postgresql]
Usage
There's basicly two rules to use this tool:
- The changelog file MUST in the same folder as the migrations
- The changelog file MUST follow the expected format specified in the documentation
- The migration SQL file MUST have a set of metadata to be applied properly
About the first rule, it's simple, follow this folder structure and you will be fine:
migrations/
├── changelog.xml
├── Table1
│ └── Table1-createtable.sql
└── Table2
└── Table2-createtable.sql
The second rule applies for the changelog file format, which depending on her extension, MUST be one of these two:
XML
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog>
<include file="Table1/Table1-createtable.sql" relativeToChangelogFile="true" />
<include file="Table2/Table2-createtable.sql" relativeToChangelogFile="dev, prod" />
</databaseChangeLog>
YAML
- file: Table1/Table1-createtable.sql
- file: Table2/Table2-createtable.sql
context: dev, prod
The third rule specifies that the migration must have a set of metadata, which are:
--liquibase formatted sql
--changeset <author>:<migration-id>
CREATE TABLE Table1();
The configuration object passed as a parameter for the function that will execute the migrations should have a field named config
that at least
implements the __get__()
method and have the following key-values:
class App:
def __init__(self):
self.config = {
'DB_USER': 'user', # the database user
'DB_PASSWORD': 'password', # the database password
'DB_HOST': 'localhost', # the database host
'DB_DATABASE': 'foo' # the database name
}
To call the migrate()
function, three parameters must be given, they are:
from basemigrator import migrate
migrate(
app=app, # the app configuration object
changelog='/path/to/migrations', # the full path of the migrations folder
context='dev' # the context which the migrations will be applied
)
Supported databases
- MySQL
- PostgreSQL
PostgreSQL
Currently, procedures create statements are not supported.
TODO
- CI/CD
- code linting
- publish package to pypi
- Contributing section
- tests/
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
Hashes for basemigrator-0.1.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fa2ffbc2b4d237c16b447cc6de71f5c9ecede43c2635b1102f5884daea54a481 |
|
MD5 | d0783f52b7581b081ea4edbf16b1c7be |
|
BLAKE2b-256 | afd7c55c9c46263c1b18cd1b5f01314ed05c21e391d42300b90db6fd456fc486 |