🐍 python database migration tool based on git's design
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode
bin
hiss
runner/lint
tests/hiss
utils
.coveralls.yml
.gitignore
.travis.yml
LICENSE
MANIFEST.in
README.rst
setup.cfg
setup.py

README.rst

pypi wheel travis License: Apache-2.0 Join the chat at https://gitter.im/KennethanCeyer/PIGNOSE

What is the hiss?

hiss is simple cli tool to control the database schema. If you care a stable enterprise service, You need to know hiss cli.

If you designed the schema of development environment database, and you want to move it to a production server.

It would be difficult and unstable. hiss can help to migrate for deployment and also help to ETL for another database engine.

Installation

hiss can be installed pypi.

$ pip install hiss-cli

Features (Plan)

  • Supporting common databases (MySQL, MSSQL, PostgreSQL, MariaDB, Oracle)
  • Controlling revision history of changes the schema.
  • Commit, Rollback, Push, Reset, Tag, List, Show (The simple command designs based on Git.
  • ETL to another database and analyze (To another common databases or distribute engines: Athena, Presto, Impala, Druid, Hadoop system, or JSON, XML, CSV)

Design (Plan)

$ hiss init
$ hiss remote add origin database.endpoint.com:3306

> connecting... done.
> database `MySQL`, v5.7.11
> Type username: {username}
> Type password: {password}

$ hiss show databases
> couting databses: 32.
> databse_1_schema
> databse_2_schema
> databse_3_schema
> more...

$ hiss checkout database_1_schema
> switched to database `database_1_schema`.

$ hiss show tables
> counting tables: 160.
> information_schema
> table_1_sample
> table_2_sample
> table_3_sample

$ hiss set tables table_1_sample
> now your current table is `table_1_sample`.

$ hiss add column new_column int(64) pk auto_increment default 0 not null -m 'column comment'
> add column `new_column`, done.

$ hiss status
> counting changes: 1, done.
> add column 'new_column' int(64) primary auto_increment default 0 not null
> : column comment
> end

$ hiss commit -m 'add new column for testing'.
> 1 changes are committed, 1 add(+), 0 remove(-), 0 modified(=).

$ hiss reset HEAD^ --hard
> reset... done.
> : first commit message.

$ hiss tag -a v1.0 -m 'marking for first commition.'
> done.

Notice

This repository is still progress under development.

If you want to use the demo version, Please send a message via gitter (Check the above badge).

Thank you.

TODO

  • [] Continous Integration & Continous Deployment
  • [] Add UnitTest
  • [] Add commands: init, show, checkout
  • [] Integration with MySQL
  • [] Branding: LOGO