Как в django подключить mysql
Перейти к содержимому

Как в django подключить mysql

  • автор:

Модели

Для хранения данных в веб-приложении, как правило, применются базы данных. И фреймворк Django уже по умолчанию предоставляет удобный функционал для работы с различными системами баз данных.

Настройки подключения к базе данных

По умолчанию Django в качестве базы данных использует SQLite. Она очень проста в использовании и не требует запущенного сервера. Все файлы базы данных могут легко переноситься с одного компьютера на другой. Однако при необходимости мы можем использовать в Django большинство распространенных СУБД.

Для работы с базами данных в проекте Django в файле settings.py определен параметр DATABASES , который по умолчанию выглядит следующим образом:

DATABASES = < 'default': < 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', >>

Переменная DATABASES содержит набор конфигураций подключений к базам данных в виде словаря. Ключи в этом словаре — названия подключений. То есть мы можем определить кучу подключений. Но как минимум одно подключение должно быть определено в переменной DATABASES — подключение с именем default , которое представляет подключение по умолчанию.

Конфигурация каждого подключения может состоять из ряда параметров. По умолчанию указываются только два параметра. Параметр ENGINE указывает на используемый движок для доступа к БД. В данном случае это встроенный пакет django.db.backends.sqlite3 .

Второй параметр — NAME указывает на путь к базе данных. По умолчанию база данных называется db.sqlite3 . Для установки пути используется каталог из переменной BASE_DIR, которая задана в начале файла:

BASE_DIR = Path(__file__).resolve().parent.parent

По умолчанию BASE_DIR указывает на каталог, в котором находится папка проекта. И после первого запуска проекта в указанном каталоге по умолчанию будет создан файл db.sqlite3 , который собственно и будет использоваться в качестве базы данных.

Установка пути к базе данных в проекте Django

Поддерживаемые субд

Чтобы использовать другие системы управления базами данных, необходимо будет установить соответствующий пакет.

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

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

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

  1. Установка сервера и консольного клиента MySQL:$ sudo apt-get install mysql-server mysql-clientВ процессе установки сервера перед вами появится окошко с предложением задать пароль для root-пользователя MySQL.
  2. Создание базы данных для работы веб-приложения Django:$ mysql -u root -pВы перейдете в консольный клиент MySQL. Введите пароль root-пользователя, заданный в диалоговом окне на предыдущем шаге. В консольном клиенте введите следующую команду:mysql> CREATE DATABASE ‘someapp’ DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;Замените «someapp» на название вашего приложения в Django. Задание CHARACTER SET необходимо для корректной работы Django с базой данных.
  3. Создание отдельного пользователя для Django в MySQL:mysql> CREATE USER ‘django’@’localhost’ IDENTIFIED BY ‘password’;mysql> GRANT ALL PRIVILEGES ON ‘someapp’.* TO ‘django’@’localhost’;mysql> FLUSH PRIVILEGES;Укажите свой пароль вместо «password» и название своего приложения вместо «someapp». Второй и третьей командой пользователю django выдаются права на созданную ранее таблицу.
  4. Нажмите Ctrl-D для выхода из консольного клиента MySQL.
  5. Установка библиотек и пакетов, необходимых для работы с MySQL из Python:$ sudo apt-get install python3-dev libmysqlclient-dev build-essential$ pip install mysqlclientОбратите внимание, что mysqlclient является форком официального драйвера MySQLdb, но мы используем первый, потому что он поддерживает Python 3. На момент написания статьи MySQLdb не поддерживает третью версию языка.
  6. Создание дампа данных:$ python manage.py dumpdata —indent=2 —exclude=contenttypes > datadump.jsonПри выполнении этой команды все еще используется SQLite БД — именно из нее выгружаются данные.
  7. Изменение настроек проекта на использование MySQL:# инструкция с официального сайта djangoproject.com# settings.pyDATABASES = < 'default': < 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': < 'read_default_file': '/path/to/my.cnf', >, >># my.cnf[client]database = someappuser = djangopassword = PASSWORDdefault-character-set = utf8Замените «someapp» на название созданной вами для приложения базы данных. Также обратите внимание, что вам необходимо задать корректный путь к файлу в первом фрагменте кода.
  8. Проведите миграции в Django и загрузите данные:$ python manage.py makemigrations$ python manage.py migrate$ python manage.py loaddata datadump.json

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

Следите за новыми постами по любимым темам

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

RENOTES

Обновляем информацию о пакетах и запускаем установку последней версии (на момент написания 3.5):

sudo apt-get update; sudo apt-get install python3.5 sudo apt-get install python-setuptools
sudo easy_install -U pip
sudo pip install virtualenv

Создаем новое окружение:

mkdir ~/mynew/ cd ~/mynew/ virtualenv --no-site-packages mynew

Если в ОС стоит несколько версий python, то virtualenv можно указать, какую версию использовать:

virtualenv --no-site-packages -p python3.5 mynew

Теперь мы можем наполнять новое окружение необходимыми модулями. Активируем окружение:

source mynew/bin/activate

В начало строки приглашения в терминале должно будет добавится название окружения (mynew). Это значит, что окружение активировалось. Теперь для всего будет использоваться версия python из этого окружения и видны только модули установленные в него.

Устанавливаем нужные модули:

pip install Django

Запуск Django с mysql:

django-admin startproject mysite

Редактирум mysite/settings.py (по умолчанию там sqlite):

DATABASES = < 'default': < 'ENGINE': 'django.db.backends.mysql', 'NAME': 'имя БД', 'USER': 'юзер БД', 'PASSWORD': 'пароль БД', >>
python manage.py migrate

При возникновении ошибки ImportError: No module named ‘MYSQLdb’ необходимо установить пакет для работы с mysql. Если используется python2 — MySQLdb, если python3 — mysqlclient:

easy_install MySQLdb или mysqlclient соответственно

После успешной миграции, запускаем проект:

python manage.py runserver

Linux: Установка и запуск Django с mysql

Если все отлично, создаем пользователя:

python manage.py createsuperuser

Для того, чтобы выйти из активированного окружения:

deactivate

Connect Django to MySQL Database

Connect Django to MySQL Database

  1. Initial Setup of Connecting MySQL to Django
  2. Django MySQL Connection Settings

When working with databases, we have a lot of options on the list. We can choose among relational databases or SQL databases such as MySQL, PostgreSQL, SQL Server, SQLite, MariaDB, and non-relational databases or non-SQL databases such as MongoDB and Redis Couchbase.

Since Django is a full-fledged robust web framework, it is compatible with almost all databases. We might have to do some extra work on our end or maybe use some plugins or applications for specific databases, but Django official supports PostgreSQL, MariaDB, MySQL, Oracle, and SQLite.

This article talks about how to connect MySQL to Django.

Initial Setup of Connecting MySQL to Django

Before proceeding with the connection settings, make sure that you have MySQL set up on your system. Make sure that you have an account created and databases created that you wish to connect.

Moreover, you will also require a MySQL Client to interact with the databases using Python (3.X versions).

The MySQL client can be downloaded using the following pip command.

pip install mysqlclient 
pip3 install mysqlclient 

Django MySQL Connection Settings

Django, by default, uses the SQLite database. The connection settings for the same looks like this.

DATABASES =   "default":   "ENGINE": "django.db.backends.sqlite3",  "NAME": BASE_DIR / "db.sqlite3",  > > 

To connect Django to the MySQL database, we have to use the following settings.

DATABASES =   "default":   "ENGINE": "django.db.backends.mysql",  "NAME": "databaseName",  "USER": "databaseUser",  "PASSWORD": "databasePassword",  "HOST": "localhost",  "PORT": "portNumber",  > > 

The ENGINE key for MySQL database varies. Apart from that, there are a few extra keys such as USER , PASSWORD , HOST , and PORT .

Lastly, make the required migrations using python manage.py makemigrations and python manage.py migrate to complete the setup.

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Related Article — Django Database

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *