Skip to main content
← Back to Schedule

Seamless Transition: How I Converted an Existing MySQL Database to be Fully Managed by Django Migrations Framework

to View on time.is

Online talks

Video Video

About this session

In this presentation, I aim to demystify the complexities of database migrations in Django, catering to audiences with basic knowledge of the framework. Through a structured approach, I will delve into three key topics:

  • Understanding Django's Migration Process: I will elucidate how Django determines and executes migrations, shedding light on the underlying mechanisms that govern this process.
  • Managing Dependencies in Migration Files: Delving deeper, I'll explore how dependencies within migration files impact the migration process, offering insights into best practices to navigate potential challenges.
  • Practical Steps for Migrating an Existing Database: Leveraging my own experience, I will guide attendees through a step-by-step methodology for migrating an existing database to Django. This will include:
  1. Ensuring consistency in the id field type and configuring the DEFAULT_AUTO_FIELD setting accordingly. I'll also address strategies for handling inconsistencies.
  2. Utilizing 'manage.py inspectdb' to generate models and incorporating them into the 'models.py' file.
  3. Transitioning models from 'managed=False' to 'managed=True' to initiate migration tracking.
  4. Handling existing Many-to-Many Relationships seamlessly.
  5. Generating initial migration files with 'manage.py makemigrations' and faking the initial migration with 'manage.py migrate --fake'.
  6. Optionally, creating ForeignKey fields and enforcing backend foreign key relationships.
  7. Addressing the cleanup of orphaned columns in preparation for conversion to Foreign Keys.

This talk will be structured with slides covering the first two topics, followed by a practical demonstration of the third topic through real-world examples and code snippets.

It's important to note that while my methodology was successful with a MySQL database, variations may occur with other database languages. In the event of selection, I am committed to collaborating with a mentor to adapt the content for broader applicability.

Presented by

  • Daniel Ramas