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
File details
Details for the file basemigrator-0.1.3.tar.gz
.
File metadata
- Download URL: basemigrator-0.1.3.tar.gz
- Upload date:
- Size: 6.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c3ac8f9f7c448f8b4da9a2930952cf661a4ce2c0009151cb0eb2e52534e0e5e9 |
|
MD5 | f856aba013e48d7ffe4392b9356f30f1 |
|
BLAKE2b-256 | c9b329a0c35eb0a5dc3c8f40f5122fffe9289c92d70bc3e5ab81a116665c14cb |
File details
Details for the file basemigrator-0.1.3-py3-none-any.whl
.
File metadata
- Download URL: basemigrator-0.1.3-py3-none-any.whl
- Upload date:
- Size: 6.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fa2ffbc2b4d237c16b447cc6de71f5c9ecede43c2635b1102f5884daea54a481 |
|
MD5 | d0783f52b7581b081ea4edbf16b1c7be |
|
BLAKE2b-256 | afd7c55c9c46263c1b18cd1b5f01314ed05c21e391d42300b90db6fd456fc486 |