- Модели
- Настройки подключения к базе данных
- Поддерживаемые субд
- How to use MySql with Django — For Beginners
- Django Database System
- Install MySql Server
- Install the Python Driver
- Create the MySql Database
- Update Django Settings
- Start the project
- Как подключить MySQL к Django за 5 шагов
- Предпосылки
- Выполнение
- Вывод
Модели
Для хранения данных в веб-приложении, как правило, применются базы данных. И фреймворк Django уже по умолчанию предоставляет удобный функционал для работы с различными системами баз данных.
Настройки подключения к базе данных
По умолчанию Django в качестве базы данных использует SQLite. Она очень проста в использовании и не требует запущенного сервера. Все файлы базы данных могут легко переноситься с одного компьютера на другой. Однако при необходимости мы можем использовать в Django большинство распространенных СУБД.
Для работы с базами данных в проекте Django в файле settings.py определен параметр DATABASES , который по умолчанию выглядит следующим образом:
Переменная DATABASES содержит набор конфигураций подключений к базам данных в виде словаря. Ключи в этом словаре — названия подключений. То есть мы можем определить кучу подключений. Но как минимум одно подключение должно быть определено в переменной DATABASES — подключение с именем default , которое представляет подключение по умолчанию.
Конфигурация каждого подключения может состоять из ряда параметров. По умолчанию указываются только два параметра. Параметр ENGINE указывает на используемый движок для доступа к БД. В данном случае это встроенный пакет django.db.backends.sqlite3 .
Второй параметр — NAME указывает на путь к базе данных. По умолчанию база данных называется db.sqlite3 . Для установки пути используется каталог из переменной BASE_DIR, которая задана в начале файла:
BASE_DIR = Path(__file__).resolve().parent.parent
По умолчанию BASE_DIR указывает на каталог, в котором находится папка проекта. И после первого запуска проекта в указанном каталоге по умолчанию будет создан файл db.sqlite3 , который собственно и будет использоваться в качестве базы данных.
Поддерживаемые субд
Чтобы использовать другие системы управления базами данных, необходимо будет установить соответствующий пакет.
How to use MySql with Django — For Beginners
Hello Coders, This article explains How to use MySql with Django and switch from the default SQLite database to a production-ready DBMS (MySql). This topic might sound like a trivial subject but during my support sessions, I got this question over and over especially from beginners. For newcomers, Django is a leading Python web framework built by experts using a bateries-included concept. Being such a mature framework, Django provides an easy way to switch from the default SQLite database to other database engines like MySql, PostgreSQL, or Oracle. MySql is a powerful open-source relational database where the information is correlated and saved in one or more tables.
Django Database System
Django provides a generic way to access multiple database backends using a generic interface. In theory, Django empowers us to switch between DB Engines without updating the SQL code. The default SQLite database usually covers all requirements for small or demo projects but for production use, a more powerful database engine like MySql or PostgreSQL is recommended. The database settings are saved in the file referred by manage.py file. In my Django projects, this file is saved inside the core directory:
< PROJECT ROOT > | |-- manage.py # Specify the settings file | |-- core/ # Implements app logic | |-- settings.py # Django app bootstrapper | |-- wsgi.py # Start the app in production | |-- urls.py # Define URLs served by all apps/nodes
# File: core/settings.py . DATABASES = 'default': 'ENGINE': 'django.db.backends.sqlite3', 'NAME' : 'db.sqlite3', > > .
- Install the MySql Server (we can also use a remote one)
- Install the Mysql Python driver — used by Django to connect and communicate
- Create the Mysql database and the user
- Update settings Django
- Execute the Django migration and create the project tables
Install MySql Server
The installation process is different on different systems but this phase should not be a blocking point because Unix systems provide by default a MySql server and for Windows, we can use a visual installer. For more information please access the download page and select the installer that matches your operating system:
Install the Python Driver
To successfully access the Mysql Engine, Django needs a driver (aka a connector) to translate the Python queries to pure SQL instructions.
The above instruction will install the Python MySql driver globally in the system. Another way is to use a virtual environment that sandboxes the installation.
$ # Create and activate the virtual environment $ virtualenv env $ source env/bin/activate $ $ # install the mysql driver $ pip install mysqlclient
Create the MySql Database
During the initial setup, Django creates the project tables but cannot create the database. To have a usable project we need the database credentials used later by the Django project. The database can be created visually using a database tool (like MySQL Workbench) or using the terminal:
CREATE USER 'test'@'localhost' IDENTIFIED BY 'Secret_1234';
Grant all privileges to the newly created user
GRANT ALL PRIVILEGES ON `mytestdb` . * TO 'test'@'localhost'; FLUSH PRIVILEGES;
Update Django Settings
Once the MySql database is created we can move on and update the project settings to use a MySql server.
# File: core/settings.py . DATABASES = 'default': 'ENGINE' : 'django.db.backends.mysql', # 'NAME' : 'mytestdb', # 'USER' : 'test', # 'PASSWORD': 'Secret_1234', # 'HOST' : 'localhost', # 'PORT' : '3306', > > .
Start the project
The next step in our simple tutorial is to run the Django migration that will create all necessary tables.
$ # Create tables $ python manage.py makemigrations $ python manage.py migrate
$ # Start the application (development mode) $ python manage.py runserver
At this point, Django should be successfully connected to the Mysql Server and we can check the database and list the newly created tables during the database migration.
Thanks for reading! For more resources feel free to access:
- Django Dashboards — a curated index with simple starters
- Free Dashboards — open-source projects crafted in different technologies (Flask, Django, React)
Как подключить MySQL к Django за 5 шагов
База данных является важным компонентом веб-приложения для хранения и организации данных. Всякий раз, когда мы разрабатываем приложение или веб-сайт, нам нужно выбрать подходящую базу данных, которая сделает его более интерактивным.
Django поставляется со встроенной базой данных SQLite. Однако мы можем использовать различные базы данных в Django. Ниже приведены списки баз данных, которые поддерживает Django.
Есть также ряд серверных баз данных, предоставленных третьими сторонами. Промежуточное ПО Django позволяет нам взаимодействовать с базой данных. В этом руководстве мы узнаем, как подключить базу данных MySQL к нашему приложению Django.
Предпосылки
Мы предполагаем, что вы уже установили сервер MySQL на свой локальный компьютер. Если вы не установили его, загрузите его с официального сайта MySQL.
Выполнение
Мы используем следующие шаги, чтобы установить соединение между Django и MySQL.
Шаг – 1. Создайте виртуальную среду и настройте проект Django.
Сначала мы создадим виртуальную среду и установим в нее Django. Мы пропускаем этот процесс, так как он удлиняет урок. Мы создаем новый проект, используя следующую команду.
django-admin startproject MyProject .
Точка(.) в конце команды означает, что мы создаем проект в рабочем каталоге. Если период не указан, проект будет создан в новом каталоге с именем MyProject, и внутри этого каталога будут содержаться наши настоящие файлы django.
Теперь запустите сервер с помощью приведенной ниже команды.
python manage.py runserver
Терминал отобразит ссылку http://127.0.0.1:8000, перейдите по этой ссылке.
Шаг – 2. Создайте новую базу данных.
Мы можем создать базу данных двумя способами — MySQL Workbench и MySQL shell. MySQL Workbench — это инструмент с графическим интерфейсом для базы данных MySQL, который предоставляет такие функции, как разработка SQL, моделирование данных и администрирование сервера. Мы будем использовать оболочку MySQL, которая более рекомендуема для учебных целей.
Используйте запрос создания базы данных my_database. Это создаст новую базу данных.
Мы можем проверить базы данных с помощью запроса show databases.
+--------------------------------------+ | Database | +--------------------------------------+ | information_schema | | my_database | | mysql | | performance_schema | | sys | +---------------------------------------+ 5 rows in set(0.05 sec)
Он показывает всю доступную базу данных на нашем сервере MySQL.
Шаг – 3. Обновите файл settings.py.
Когда мы закончим создание базы данных, мы должны обновить раздел базы данных файла settings.py со следующей конфигурацией параметров.
Давайте разберемся, что мы сделали выше.
- Во-первых, мы заменили «django.db.backends.sqlite3» на «django.db.backends.mysql». Это в основном указывает на то, что мы переносим SQLite на базу данных MySQL.
- NAME указывает имя базы данных, которую мы хотим использовать.
- USER — это имя пользователя MYSQL, который имеет доступ к базе данных и действует как администратор базы данных.
- PASSWORD — пароль базы данных. Он будет создан во время установки MySQL.
- «HOST» — «127.0.0.1», а «PORT» «3306» указывает, что база данных MySQL размещена с именем хоста «0.0.1» и прослушивает конкретный номер порта — 3306.
- В последней строке мы используем SET sql_mode = ‘STATIC_TRANS_TABLES’, который используется для обработки недопустимых или отсутствующих значений, сохраняемых в базе данных операторами INSERT и UPDATE.
Шаг – 4. Установите пакет mysqlclient.
Перед установкой пакета mysqlclient давайте разберемся, что такое mysqlclient и почему мы его используем. mysqlclient — это интерфейс Python для MySQL, который позволяет проекту Python подключаться к серверу MySQL.
Поэтому необходимо установить пакет mysqlclient, чтобы установить соединение между MySQL и Django. Для установки используйте следующую команду в рабочем каталоге.
Шаг – 5. Запустите команду миграции.
Теперь мы готовы к миграции или созданию таблиц во вновь созданной базе данных. На этом последнем шаге мы запустим команду migrate, и она создаст существующие таблицы в базе данных my_database.
После запуска этой команды Django автоматически создаст необходимые таблицы, такие как auth_group, auth_user, auth_permission и т. д. Он также создаст таблицы, определенные в файле models.py.
+-------------------------------------------------------+ | Tables_in_my_database | +-------------------------------------------------------+ | auth_group | | auth_group_permissions | | auth_permission | | auth_user | | auth_user_groups | | auth_user_user_permissions | | django_admin_log | | django_content_type | | django_migrations | | django_session | | myweatherapp_profile | +---------------------------------------------------------+ 11 rows in set(0.05 sec)
Вывод
В этом руководстве мы обсудили, как мы можем использовать базу данных MySQL в Django. Хотя Django поставляется со встроенной базой данных SQLite, иногда она не соответствует требованиям. Таким образом, мы можем подключаться к различным базам данных.