long2ice e87f67f1e1 update github actions
update github actions

update github actions

update github actions

update github actions

update github actions

update github actions

update github actions

update github actions

update github actions

update github actions
2020-06-02 22:02:46 +08:00
2020-06-02 22:02:46 +08:00
2020-06-01 14:57:29 +08:00
2020-05-26 10:22:02 +08:00
2020-05-20 18:42:13 +08:00
2020-05-26 14:44:55 +08:00
2020-05-25 22:39:39 +08:00
2020-05-14 18:46:17 +08:00
2020-06-02 22:02:46 +08:00
2020-06-02 22:02:46 +08:00
2020-06-02 22:02:46 +08:00
2020-05-20 18:42:13 +08:00
2020-05-25 22:39:39 +08:00

======
Aerich
======

.. image:: https://img.shields.io/pypi/v/aerich.svg?style=flat
   :target: https://pypi.python.org/pypi/aerich
.. image:: https://img.shields.io/github/license/long2ice/aerich
   :target: https://github.com/long2ice/aerich
.. image:: https://github.com/long2ice/aerich/workflows/pypi/badge.svg
   :target: https://github.com/long2ice/aerich/actions?query=workflow:pypi
.. image:: https://github.com/long2ice/aerich/workflows/test/badge.svg
   :target: https://github.com/long2ice/aerich/actions?query=workflow:test

Introduction
============

Tortoise-ORM is the best asyncio ORM now, but it lacks a database migrations tool like alembic for SQLAlchemy, or Django ORM with it's own migrations tool.

This project aim to be a best migrations tool for Tortoise-ORM and which written by one of contributors of Tortoise-ORM.

Install
=======

Just install from pypi:

.. code-block:: shell

    $ pip install aerich

Quick Start
===========

.. code-block:: shell

    $ aerich -h

    Usage: aerich [OPTIONS] COMMAND [ARGS]...

    Options:
      -c, --config TEXT  Config file.  [default: aerich.ini]
      --app TEXT         Tortoise-ORM app name.  [default: models]
      -n, --name TEXT    Name of section in .ini file to use for aerich config.
                         [default: aerich]
      -h, --help         Show this message and exit.

    Commands:
      downgrade  Downgrade to previous version.
      heads      Show current available heads in migrate location.
      history    List all migrate items.
      init       Init config file and generate root migrate location.
      init-db    Generate schema and generate app migrate location.
      migrate    Generate migrate changes file.
      upgrade    Upgrade to latest version.

Usage
=====
You need add ``aerich.models`` to your ``Tortoise-ORM`` config first, example:

.. code-block:: python

    TORTOISE_ORM = {
        "connections": {"default": "mysql://root:123456@127.0.0.1:3306/test"},
        "apps": {
            "models": {
                "models": ["tests.models", "aerich.models"],
                "default_connection": "default",
            },
        },
    }

Initialization
--------------

.. code-block:: shell

    $ aerich init -h

    Usage: aerich init [OPTIONS]

      Init config file and generate root migrate location.

    Options:
      -t, --tortoise-orm TEXT  Tortoise-ORM config module dict variable, like settings.TORTOISE_ORM.
                               [required]
      --location TEXT          Migrate store location.  [default: ./migrations]
      -h, --help               Show this message and exit.

Init config file and location:

.. code-block:: shell

    $ aerich init -t tests.backends.mysql.TORTOISE_ORM

    Success create migrate location ./migrations
    Success generate config file aerich.ini

Init db
-------

.. code-block:: shell

    $ aerich init-db

    Success create app migrate location ./migrations/models
    Success generate schema for app "models"

.. note::

    If your Tortoise-ORM app is not default ``models``, you must specify ``--app`` like ``aerich --app other_models init-db``.

Update models and make migrate
------------------------------

.. code-block:: shell

    $ aerich migrate --name drop_column

    Success migrate 1_202029051520102929_drop_column.json

Format of migrate filename is ``{version_num}_{datetime}_{name|update}.json``

Upgrade to latest version
-------------------------

.. code-block:: shell

    $ aerich upgrade

    Success upgrade 1_202029051520102929_drop_column.json

Now your db is migrated to latest.

Downgrade to previous version
-----------------------------

.. code-block:: shell

    $ aerich downgrade

    Success downgrade 1_202029051520102929_drop_column.json

Now your db rollback to previous version.

Show history
------------

.. code-block:: shell

    $ aerich history

    1_202029051520102929_drop_column.json

Show heads to be migrated
-------------------------

.. code-block:: shell

    $ aerich heads

    1_202029051520102929_drop_column.json

Limitations
===========
* Not support ``rename column`` now.
* ``Sqlite`` and ``Postgres`` may not work as expected because I don't use those in my work.

License
=======
This project is licensed under the `MIT <https://github.com/long2ice/aerich/blob/master/LICENSE>`_ License.
Description
A database migrations tool for TortoiseORM, ready to production.
Readme Apache-2.0 1.6 MiB
Languages
Python 99.3%
Makefile 0.7%