Планета гаджетов / технологий
SQLite3 является СУБД-движком по умолчанию в Python веб-фреймворке Django, а также, как сообщается на официальном сайте проекта, самым часто используемым движком в мире. И он отлично походит для быстрого прототипирования веб-проекта, однако имеет ряд недостатков, о которых мы рассказывали в одной из статей на нашем сайте, и по мере роста веб-приложения приходится переходить на полнофункциональную РСУБД — например, MySQL. И здесь разработчик может столкнуться с проблемами. Мы предлагаем воспользоваться нижеследующей инструкцией, чтобы их избежать или хотя бы максимально снизить вероятность их появления.
Инструкция написана для следующей конфигурации: Ubuntu 16.04, Python 3.5.2, Django 1.10.4.
$ sudo apt—get install mysql—server mysql—client |
В процессе установки сервера перед вами появится окошко с предложением задать пароль для root-пользователя MySQL.
mysql> CREATE DATABASE ‘someapp’ DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; |
Замените «someapp» на название вашего приложения в Django. Задание CHARACTER SET необходимо для корректной работы Django с базой данных.
mysql> CREATE USER ‘django’@‘localhost’ IDENTIFIED BY ‘password’; mysql> GRANT ALL PRIVILEGES ON ‘someapp’.* TO ‘django’@‘localhost’; |
Укажите свой пароль вместо «password» и название своего приложения вместо «someapp». Второй и третьей командой пользователю django выдаются права на созданную ранее таблицу.
$ sudo apt—get install python3—dev libmysqlclient—dev $ pip install mysqlclient |
Обратите внимание, что mysqlclient является форком официального драйвера MySQLdb, но мы используем первый, потому что он поддерживает Python 3. На момент написания статьи MySQLdb не поддерживает третью версию языка.
$ python manage.py dumpdata —indent=2 —exclude=contenttypes > datadump.json |
При выполнении этой команды все еще используется SQLite БД — именно из нее выгружаются данные.
# инструкция с официального сайта djangoproject.com ‘ENGINE’: ‘django.db.backends.mysql’, ‘OPTIONS’: { ‘read_default_file’: ‘/path/to/my.cnf’, |
default—character—set = utf8 |
Замените «someapp» на название созданной вами для приложения базы данных. Также обратите внимание, что вам необходимо задать корректный путь к файлу в первом фрагменте кода.
$ python manage.py makemigrations $ python manage.py migrate —run—syncdb $ python manage.py loaddata.json |
Теперь ваши данные успешно перенесены в СУБД MySQL. В случае если у вас возникнут трудности при точном следовании этой инструкции, сообщайте в комментариях к этой статье — будем разбираться и добавлять примечания, чтобы сформировать универсальное руководство.
Основано на ответе пользователя Carlos Henrique Cano на Stack Overflow и собственном опытеАнтон Машков, главный редактор