Skip to content

🐍 python database migration tool based on git's design

License

Notifications You must be signed in to change notification settings

KennethanCeyer/hiss

Repository files navigation

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