Инструкция: как перевести проект Django с SQLite на MySQL без боли

SQLite3 является СУБД-движком по умолчанию в Python веб-фреймворке Django, а также, как сообщается на официальном сайте проекта, самым часто используемым движком в мире. И он отлично походит для быстрого прототипирования веб-проекта, однако имеет ряд недостатков, о которых мы рассказывали в одной из статей на нашем сайте, и по мере роста веб-приложения приходится переходить на полнофункциональную РСУБД — например, MySQL. И здесь разработчик может столкнуться с проблемами. Мы предлагаем воспользоваться нижеследующей инструкцией, чтобы их избежать или хотя бы максимально снизить вероятность их появления.

Инструкция написана для следующей конфигурации: Ubuntu 16.04, Python 3.5.2, Django 1.10.4.

  1. Установка сервера и консольного клиента MySQL:
    В процессе установки сервера перед вами появится окошко с предложением задать пароль для root-пользователя MySQL.
  2. Создание базы данных для работы веб-приложения Django:
    Вы перейдете в консольный клиент MySQL. Введите пароль root-пользователя, заданный в диалоговом окне на предыдущем шаге. В консольном клиенте введите следующую команду:
    Замените «someapp» на название вашего приложения в Django. Задание CHARACTER SET необходимо для корректной работы Django с базой данных.
  3. Создание отдельного пользователя для Django в MySQL:
    Укажите свой пароль вместо «password» и название своего приложения вместо «someapp». Второй и третьей командой пользователю django выдаются права на созданную ранее таблицу.
  4. Нажмите Ctrl-D для выхода из консольного клиента MySQL.
  5. Установка библиотек и пакетов, необходимых для работы с MySQL из Python:
    Обратите внимание, что mysqlclient является форком официального драйвера MySQLdb, но мы используем первый, потому что он поддерживает Python 3. На момент написания статьи MySQLdb не поддерживает третью версию языка.
  6. Создание дампа данных:
    При выполнении этой команды все еще используется SQLite БД — именно из нее выгружаются данные.
  7. Изменение настроек проекта на использование MySQL:
    Замените «someapp» на название созданной вами для приложения базы данных. Также обратите внимание, что вам необходимо задать корректный путь к файлу в первом фрагменте кода.
  8. Проведите миграции в Django и загрузите данные:

Теперь ваши данные успешно перенесены в СУБД MySQL. В случае если у вас возникнут трудности при точном следовании этой инструкции, сообщайте в комментариях к этой статье — будем разбираться и добавлять примечания, чтобы сформировать универсальное руководство.

Основано на ответе пользователя Carlos Henrique Cano на Stack Overflow и собственном опыте