Рубрики
Без рубрики

Как называть миграции Django (и почему это важно)

Вам когда-нибудь нужно было отменить, поддельные или иметь дело с миграциями более глубоко, чем типичный Python … Теги с Django, Python, база данных.

Вам когда-нибудь нужно было отменить, поддельные или иметь дело с миграциями более глубоко, чем типичные Python Manage.py мигрировать ? Вы оказались открыть файлы миграции, чтобы узнать, что они содержали? Все, вероятно, будут в какой-то момент.

И если у вас есть, вы, наверное, знаете, какая боль может быть искать все эти файлы. В этом посте мы поговорим о преимуществах правильного названия ваших миграций Django и покажем, как выполнение маленькой подготовительной работы может сэкономить вас – и своих товарищных разработчиков – много времени. Но до этого, давайте охватием основы.

Какие миграции Джанго?

Миграция Django – это основная часть объектно-реляционного Mapper Django, обычно сокращается в ORM. Если вы не знакомы с ORM, это одно из мощных функций Django, которая позволяет вам взаимодействовать с вашей базой данных, как будто вы с SQL.

Миграционная структура была приведена в Django на версию 1.7. Сами миграции состоят из кода Python и определяют операции, чтобы применить к схеме базы данных, поскольку она прогрессирует через жизненный цикл разработки программного обеспечения или SDLC. Эти миграционные файлы для каждого приложения живут в каталоге Migrations в приложении, и, согласно Django Documentation, предназначены для приверженности и распространяются как часть его кодовой базы.

Django Документация Рассказывает нам, что миграции должны быть сделаны «один раз на вашей машине для разработки, а затем запускать те же миграции на машинах ваших коллег, вашим постановке машин и в конечном итоге ваших производственных машин».

Это полезно думать «миграции в качестве системы управления версией для вашей схемы базы данных».

С точки зрения поддержки бэкэндов, миграции поддерживаются на любых жителях, которые Django поставляются, включая сторонние бэкэнсинги, которые имеют поддержку изменению схемы. Но не все базы данных равны, когда речь идет о миграциях. Документация Django говорится, что некоторые более способны, чем другие, и стоит понять различия.

PostgreSQL

С точки зрения поддержки схемы, PostgreSQL считается наиболее способным вариантом. Одинокое исключение – это версии до PostgreSQL 11, которые добавили столбцы с значениями по умолчанию, вызывая полное перезапись таблицы, на некоторое время пропорционально его размеру.

Документация Django рекомендует всегда создавать новые столбцы, так как таким образом они будут добавлены немедленно.

MySQL

Миграционная документация Django включает в себя три предложения, когда речь идет о поддержке MySQL.

  • RILL-BAGE RINGS: MySQL не хватает поддержки транзакций вокруг операций по изменению схемы. Если миграция не удалась, вам придется вручную запустить изменения, чтобы попробовать еще раз. Короче говоря, если вы окажетесь здесь, невозможно откатиться с Django в более раннюю точку – для этого вам нужно будет использовать RAW SQL.
  • Медленные времена выполнения: MySQL полностью переписывает таблицы практически для каждой операции схемы, вызывая рассмотрение использования ресурсов, поскольку требуется время пропорционально количеству строк в таблице, чтобы добавить или удалить столбцы. На медленном оборудовании это может действительно вытащить процесс на оценку минут на миллион строк. – Добавление нескольких столбцов в таблицу всего за несколько миллионов строк может заблокировать свой сайт на протяжении десяти минут.
  • Ограниченные длины наименований: MySQL имеет относительно небольшие ограничения на длину наименований для столбцов, таблиц и индексов, а также предел на комбинированном размере всех колонн. Это означает, что индексы, которые возможны на других списках, не будут создаваться под MySQL.

Sqlite.

SQLite не хватает намного прочной встроенной поддержки схемы, принудительный Django наступить в его эмуляции:

  • Создание новой таблицы с новой схемой
  • Копирование данных по всему
  • Бросить старый стол
  • Переименование новой таблицы, чтобы соответствовать исходному имени

В то время как документация Django, как правило, оптимистична о том, как процесс работает в целом, он также признает, что результаты могут прийти медленно, и результат будет «изредка багги». Не рекомендуется разработчики бегать и мигрировать SQLite в производственной среде, не впервые рассмотрев риски и ограничения.

Что настолько велико о миграциях Django?

Над почти все остальное, миграции Django важны и полезны, потому что они облегчают жизнь разработчиков.

Миграции Django помогают с ловкостью

Базы данных являются центральными компонентами приложения и в современном быстром мире в мире, все происходит быстро. Agile Projects всегда меняются, а иногда и корректировки необходимы для удовлетворения обновленных требований. Миграции Django помогают с процессом создания, применения и отслеживания изменений в схемы базы данных.

Разработчики используют Python для написания миграций Django

Если вы работаете с Django, то вы более чем скорее в кодировании в Python, потому что двое идут вручную. В Джангу миграции написаны (в первую очередь) в Python – язык все равно знает разработчики – так что вы будете работать с языком, с которым вы знакомы.

Без миграций разработчики должны будут изучать команды SQL или работать с GUI, как Phpmyadmin каждый раз, когда они хотели изменить определение модели и изменять схему базы данных.

Миграции Django помогают сократить повторение

Миграции генерируются из моделей, которые вы создаете, поэтому процесс не должен повторяться. По сравнению с созданием модели, а затем написание SQL для генерации таблиц базы данных повторяется.

Миграции Django выигрывают от контроля версий (Git)

Схемы базы данных не живут в коде, но миграции Django размещаются в приложении, прямо в папке с соответствующим именем. Таким образом, когда вы совершаете изменения и делаете обновления в миграцию, изменения отслеживаются.

Почему разработчики должны рассмотреть вопрос о том, чтобы назвать миграцию?

Одной из действительно полезных особенностей миграций Джанго является то, что они могут быть названы. Вы можете прикрепить описательный титул к каждой миграции, чтобы отличить его от других. И если ваш проект становится сложным и продолжает продленный период времени, может быть несколько миграций.

Теперь нет проблем с решением не назвать миграцию. Вы, безусловно, можете получить, не делая это.

Тем не менее, занимать минуту, чтобы назвать миграции Django полезно, если оно дает вам только указание относительно того, что внутри. Точно так же, как стоит быть описательным в названии коммитов, ветвей, и почти все, когда речь идет о контроле версий в Git, название миграции Django может помочь вам, когда вы оглядываетесь в версии для определенного файла.

Вы можете потратить время проходить через файлы один за другим, пока не найдете то, что вы ищете или вы можете увидеть список правильно названных миграций Django и получите хорошее представление о том, где что-то на первый взгляд.

Чистый код делает для более легкого обслуживания. Это просто делает жизнь немного легче.

Как вы называете миграции Django?

Команда Makemigrations Django имеет флаг --имя Это можно использовать для того, чтобы принимать миграции более читаемыми и легкими на глазах.

Иногда Django будет назвать ваши миграции для вас, но когда это не так, полученный заголовок может быть бесполезным при чтении людей. Когда джанго названа миграциями, он выглядит так: 0005_AUTO_20210608_2154 Отказ

Что содержит этот файл? Кто знает. Важные вещи? Может быть. Необязательные части? Твоя догадка так же хороша как и моя.

В качестве альтернативы, что если вы нашли время, чтобы назвать миграцию, как это: 0005_PERSON_EMAIL_AND_OPT_OUT ? Даже для кого-то незнакомого с проектом, вероятно, сможет выяснить, что содержит эту миграцию.

Вот простой пример, который я сделал. Первый список только использовал Makemigrations Python Manage.py:

  • 0001_initial.
  • 0002_AUTO_20210608_2147.
  • 0003_AUTO_20210608_2149.
  • 0004_person_phone_number.
  • 0005_AUTO_20210608_2154.
  • 0006_AUTO_20210608_2155.

Теперь ниже то же самое миграция, но и с --name Флаг включен в Макемиграция команда:

  • 0001_initial.
  • 0002_business_address_fields.
  • 0003_business_owner_and_person.
  • 0004_person_phone_number.
  • 0005_PERSON_EMAIL_AND_OPT_OUT.
  • 0006_business_description_and_services.

Принимая небольшое время, чтобы назвать ваши миграции приводит к более читабельной истории миграции, которая облегчает жизнь в будущем.

Посмотрите на внутренние приложения Django в качестве примера. Каждая миграция названа.

  • админ
    • 0001_initial.
    • 0002_logentry_remove_auto_add.
    • 0003_logentry_add_Action_flag_choices.
  • автор
    • 0001_initial.
    • 0002_alter_permission_name_max_length
    • 0003_alter_user_email_max_length
    • 0004_ALTER_USER_USERNAME_OPTS.
    • 0005_ALTER_USER_LAST_LOGIN_NULL.
    • 0006_require_ContentTypes_0002.
    • 0007_alter_validators_add_error_messages.
    • 0008_alter_user_username_max_length.
    • 0009_alter_user_last_name_max_length
    • 0010_alter_group_name_max_length
    • 0011_UPDATE_PROXY_PERMISSIONS.
    • 0012_alter_user_first_name_max_length.
  • ContentTypes.
    • 0001_initial.
    • 0002_REMOVE_CONTENT_TYPE_NAME.

Это так просто.

Миграция Джанго проживает в долгий путь, чтобы облегчить жизнь разработчика. Но вы можете просто выровнять свою игру и сделать жизнь для всех, когда вы даете миграцию описательное, соответствующее имя. Этот пост изначально появился на нашем Insights Blog , где мы пишем о Развлеченные консалтинговые услуги Отказ

Оригинал: “https://dev.to/kjpctech/how-to-name-django-migrations-and-why-it-s-important-37pi”