Django Evolution Releases – Beanbag Blog https://blog.beanbaginc.com Updates from the makers of Review Board Tue, 04 Oct 2022 03:35:05 +0000 en-US hourly 1 https://wordpress.org/?v=6.2.14 Django Evolution 2.2: Django 3.2-4.1 Support https://blog.beanbaginc.com/2022/10/03/django-evolution-2-2-django-3-2-4-1-support/ Tue, 04 Oct 2022 03:35:05 +0000 https://blog.beanbaginc.com/?p=1116 Django Evolution 2.2 is a major feature release, offering new database features, improved compatibility, and several bug fixes.

Django Evolution is our alternative database migration library for Django, which supports a wide range of Django versions and optimized application of database changes. It targets self-managed applications, like Review Board, which may potentially go several releases between upgrades.

The highlights include:

  • Compatibility with Django 1.6 through 4.1, and Python 2.7 through 3.11
  • Support for conditions, expressions, opclasses, and field lists in Django’s Index classes.
  • Ability to change field types in ChangeField.
  • Improved settings for defining project-provided custom evolutions.
  • Bug fixes for MySQL compatibility, edge cases in SQL generation for indexes, and Python 3.10 compatibility.

The release notes cover the full list of changes in Django Evolution 2.2.

]]>
Django Evolution 2.1.3: Evolution and compatibility fixes https://blog.beanbaginc.com/2022/01/25/django-evolution-2-1-3-evolution-and-compatibility-fixes/ Tue, 25 Jan 2022 22:45:23 +0000 https://blog.beanbaginc.com/?p=1081 Django Evolution 2.1.3 a small but important bug fix release that addresses issues with Python 3.10, mysqlclient, and evolving very old databases.

Compatibility Fixes

Python 3.10 removed some deprecated imports from collections, which Django 2.0 and older depend on. When using this combination of versions, Django Evolution will bring back those legacy imports, allowing Django to work again.

mysqlclient also received a similar fix. Django 1.11 and older depended on some unintentional functionality, which mysqlclient maintained until the 2.1 release. We now patch these versions of Django at runtime to continue working.

Upgrade Fixes

Two important issues affecting upgrades were addressed:

  1. Django Evolution no longer tries to apply evolutions to models that were just introduced. This was a regression from previous releases.
  2. When upgrading from very old databases, some state for a model’s unique_together index couldn’t be compared properly, causing issues applying some upgrades. The old format for this state is now taken into account during comparison.

Coming Up…

We’re preparing Django Evolution 2.2, which will support all versions of Django up through 4.0. This should be coming soon.

In the meantime, check out the release notes for the full changes, including other fixes in this release.

]]>
Django Evolution 2.1.2: SQLite Fixes https://blog.beanbaginc.com/2021/01/19/django-evolution-2-1-2-sqlite-fixes/ Wed, 20 Jan 2021 01:45:22 +0000 https://blog.beanbaginc.com/?p=1044 We may have just released 1.2.1, but we’re back with even more fixes!

Django Evolution 2.1.2 solves a couple of issues encountered with SQLite that could happen when adding non-NULL fields to tables with existing data (leading a a SQL execution error), and possible data loss when converting a field from NULL to non-NULL.

See the release notes for the full changes.

]]>
Django Evolution 2.1.1: DecimalField fixes https://blog.beanbaginc.com/2021/01/17/django-evolution-2-1-1-decimalfield-fixes/ https://blog.beanbaginc.com/2021/01/17/django-evolution-2-1-1-decimalfield-fixes/#comments Mon, 18 Jan 2021 04:57:16 +0000 https://blog.beanbaginc.com/?p=1042 Django Evolution 2.1.1 is out, featuring:

  • Fixes for evolving DecimalFields (including decimal_places and max_digits attributes)
  • A change in wording — evolve --execute now says “No database upgrade required” instead of “No upgrade required.”

See the release notes for the full changes.

]]>
https://blog.beanbaginc.com/2021/01/17/django-evolution-2-1-1-decimalfield-fixes/feed/ 1
New Release: Django Evolution 2.1 https://blog.beanbaginc.com/2020/11/16/new-release-django-evolution-2-1/ Tue, 17 Nov 2020 01:54:37 +0000 https://blog.beanbaginc.com/?p=1025 Just a few months ago, we released Django Evolution 2.0, the first release to support database upgrades using both Django’s migrations and our own evolutions.

Django Evolution 2.1 builds on this by introducing enhanced dependency management for evolutions and migrations. Now, an evolution (or its app) can specify other evolutions or migrations that must be applied either before or after.

Django applications that make use of swappable models can benefit from this, as an evolution defining that model can now be applied before a migration that requires it.

See the guide on adding dependencies to learn more.

Other highlights include:

  • Compatibility with Python 3.9
  • Workarounds for MySQL/MariaDB bugs in Django 1.8 through 1.10
  • Enhanced transaction management, providing safer upgrades and recovery in the event that something goes wrong

See the release notes for the complete list of changes.

]]>
Announcing Django Evolution 2.0 https://blog.beanbaginc.com/2020/08/13/announcing-django-evolution-20/ Fri, 14 Aug 2020 05:53:59 +0000 https://blog.beanbaginc.com/?p=1022 After 3 years of development, and a pretty massive rewrite, we’ve released Django Evolution 2.0.

Django Evolution is an add-on for Django that helps developer make and maintain changes to the schema of the database.

This is similar to (and predates) Django’s own migrations support, but allows for faster database upgrades and supports older versions of Django. It’s better suited for the needs of self-installable web applications (such as Review Board) that may go years between upgrades and need to minimize the amount of downtime.

This new major release of Django Evolution introduces:

  • Support for Python 2.7 and 3.5 through 3.8
  • Support Django 1.6 through 3.1
  • Full management of both evolutions and Django’s migrations, using the evolve command
  • Superior compatibility with a range of versions of SQLite, MySQL, MariaDB, and Postgres
  • Full API for fine-tune control of evolutions (useful for apps with extensions, or installers that manage an app’s database)

There’s also all-new documentation, and a full breakdown of the changes in the release notes.

]]>