🤓 Code contributions and assistance with testing are welcome and appreciated!
Tortoise Pathway is a migration system for Tortoise ORM, inspired by Django's migration approach.
See CHANGELOG.md for the latest changes.
- Generate schema migrations from Tortoise models
- Apply and revert migrations
- No need for a database connection to generate migrations
- If you have used Django migrations, you will feel at home
You can install the package using pip:
pip install tortoise-pathwayOr if you prefer using uv:
uv add tortoise-pathwayRunning tests:
uv run pytestCreate a configuration module with a TORTOISE_ORM dictionary. For example, in config.py:
TORTOISE_ORM = {
"connections": {
"default": {
"engine": "tortoise.backends.sqlite",
"credentials": {
"file_path": "db.sqlite3",
},
},
},
"apps": {
"models": {
"models": ["myapp.models"],
"default_connection": "default",
},
},
}Define your Tortoise ORM models as usual:
# myapp/models.py
from tortoise import fields, models
class User(models.Model):
id = fields.IntField(primary_key=True)
name = fields.CharField(max_length=255)
email = fields.CharField(max_length=255, unique=True)
created_at = fields.DatetimeField(auto_now_add=True)Generate migrations automatically based on model changes:
python -m tortoise_pathway --config myapp.config.TORTOISE_ORM makeor generate an empty migration with a name:
python -m tortoise_pathway --config myapp.config.TORTOISE_ORM make --empty --name "add_email_field"Apply migrations:
python -m tortoise_pathway --config myapp.config.TORTOISE_ORM migrateRevert a migration:
python -m tortoise_pathway --config myapp.config.TORTOISE_ORM rollback --migration <migration_name>