Skip to main content

A database schema evolution tool for the Django web framework.

Project description

Django Evolution is an add-on to the Django web framework that helps manage changes to the database schema.

“But wait, why would I want this? Doesn’t Django have migrations built-in? Isn’t this the same thing?”

Yes, yes it does, and it mostly is. In fact, Django Evolution works comfortably alongside Django’s migrations, helping you get the best out of both.

There are cases where you might want an alternative to migrations:

  1. You’re still stuck on Django 1.6 or earlier and need to make changes to your database.

    Django 1.6 is the last version without built-in support for migrations, and there are still codebases out there using it. Django Evolution can help keep upgrades manageable, and make it easier to transition all or part of your codebase to migrations when you finally upgrade.

  2. You’re distributing a self-installable web application, possibly used in large enterprises, where you have no control over when people are going to upgrade.

    Django’s migrations assume some level of planning around when changes are made to the schema and when they’re applied to a database. The more changes you make, and the more versions in-between what the user is running and what they upgrade to, the longer the upgrade time.

    If a customer is in control of when they upgrade, they might end up with years of migrations that need to be applied.

    Migrations apply one-by-one, possibly triggering the rebuild of a table many times during an upgrade. Django Evolution, on the other hand, can apply years worth of evolutions at once, optimized to perform as few table changes as possible. This can take days, hours or even seconds off the upgrade time.

What versions of Django are supported?

Django Evolution 2.0 supports Django 1.6 through 3.1.

For older versions of Django, see Django Evolution 0.7.

There’s built-in support for evolving SQLite, Postgres, MySQL, and MariaDB databases.

I can’t imagine anything better… How do I start?

We have a bunch of documentation just for you!

There, you’ll find out how to install it, configure it for your project, generate evolutions, and apply them.

Plus, answers to all^W some of your burning questions, like “how do these work with migrations?” and “why is my syncdb/migrate command weird now?”

Who’s using Django Evolution today?

There’s dozens of us! Dozens!

At Beanbag we’re using it in Review Board, our open source code review product, used by thousands of companies world-wide. So we know it works. Review Board predated Django’s migrations by a whole lot of years, and continues to benefit from the optimized upgrade times of evolutions today.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_evolution-2.1.2.tar.gz (251.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

django_evolution-2.1.2-py2.py3-none-any.whl (274.2 kB view details)

Uploaded Python 2Python 3

django_evolution-2.1.2-py2.7.egg (635.2 kB view details)

Uploaded Egg

File details

Details for the file django_evolution-2.1.2.tar.gz.

File metadata

  • Download URL: django_evolution-2.1.2.tar.gz
  • Upload date:
  • Size: 251.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/2.7.17

File hashes

Hashes for django_evolution-2.1.2.tar.gz
Algorithm Hash digest
SHA256 28bad07b5e29a0ea4bd9727c6927cbee25d349d21606a553a0c748fbee0c073c
MD5 4ff330e2902d45f093afe83f3453979e
BLAKE2b-256 1dcfe486668de828594c8c1ab28f4739dda599a0aa8f58b4cc1a8ae337ba9b42

See more details on using hashes here.

File details

Details for the file django_evolution-2.1.2-py2.py3-none-any.whl.

File metadata

  • Download URL: django_evolution-2.1.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 274.2 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/2.7.17

File hashes

Hashes for django_evolution-2.1.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 65260e09a2c8a7aea175f55a1d6080abfebd444e3add00f89924e915bb6f218b
MD5 c6630f54eb2ea54fd8d83420e38d1f28
BLAKE2b-256 cb0b17f3fa262d39e0c325af18eec84425336b794078586b54a2ce43a6851d40

See more details on using hashes here.

File details

Details for the file django_evolution-2.1.2-py2.7.egg.

File metadata

  • Download URL: django_evolution-2.1.2-py2.7.egg
  • Upload date:
  • Size: 635.2 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/2.7.17

File hashes

Hashes for django_evolution-2.1.2-py2.7.egg
Algorithm Hash digest
SHA256 2a93f871238c27ef8b940c3659481d058596a087a3882563c9283e0cb8fccb40
MD5 e7165cb7922bc9f0cb0186a56130c103
BLAKE2b-256 4508fdeb6b2671ee95be649c6f3223f29ef95e6c662e259e33916bcccbf73442

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page