Управление базой данных с помощью Django
Django официально поддерживает пять баз данных.
- PostgreSQL
- MariaDB
- MySQL
- Oracle
- SQLite
В этом блоге я объясняю, как подключить Django PostgreSQL, Mysql, and SQLite
к базе данных. Я уже создал проект helloworld
на Django. Если вам нужна помощь в создании базового приложения Django, загляните в мой предыдущий блог (Приложение Hello World с Django).
SQLite
SQLite — это база данных с открытым исходным кодом, которая помогает взаимодействовать с реляционными базами данных. SQLite хранится в одном файле. Это упрощает совместное использование баз данных. По умолчанию Django использует базу данных SQLite.
- Чтобы подключиться к базе данных SQLite, убедитесь, что у вас есть
db.sqlite3
файл в домашнем каталоге.
2. Теперь откройте файл helloworld/settings.py
. Прокрутите вниз до раздела базы данных. Вы можете увидеть что-то вроде этого. Здесь мы инициализируем все учетные данные базы данных. Если вы не видите ничего подобного, добавьте вручную приведенный ниже код в раздел базы данных.
# Database # https://docs.djangoproject.com/en/1.11/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
3. Теперь все готово.
(hello-world-django) bash-3.2$ python3 manage.py migrate
С помощью этой команды все миграции будут применены, и вы сможете начать сборку своего приложения.
4. Проверить, созданы ли базы данных. Просто используйте команду ниже
(hello-world-django) bash-3.2$ sqlite3 db.sqlite3 SQLite version 3.28.0 2019-04-15 14:49:49 Enter ".help" for usage hints. sqlite>
Теперь просто введите .tables
, чтобы просмотреть все созданные таблицы.
sqlite> .tables auth_group auth_user_user_permissions auth_group_permissions django_admin_log auth_permission django_content_type auth_user django_migrations auth_user_groups django_session
PostgreSQL
PostgreSQL — это система управления реляционными базами данных с открытым исходным кодом, которая отличается высоким уровнем устойчивости, целостности и корректности. PostgreSQL используется как хранилище баз данных для многих мобильных и веб-приложений. Он также используется во многих аналитических приложениях. PostgreSQL идеально подходит для науки о данных. Он обеспечивает хорошую поддержку и гибкость для работы с большими данными. Для работы с PostgreSQL у вас должен быть любой из клиентов PostgreSQL. Я использую pgAdmin.
- Создайте новую базу данных в pgAdmin.
2. Соединяем наш helloworld
проект Django с нашим PostgreSQL.
Установите psycopg2. Psycopg2 — это адаптер базы данных, обычно используемый для языка программирования Python.
(hello-world-django) bash-3.2$ pip install psycopg2
Теперь откройте файл helloworld/settings.py
. Прокрутите до раздела базы данных. Там вы должны увидеть приведенный ниже код.
# Database # https://docs.djangoproject.com/en/1.11/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
Теперь просто замените приведенный выше код нашими учетными данными для подключения к pgAdmin. Обновленный код должен выглядеть так, как показано ниже.
# Database # https://docs.djangoproject.com/en/1.11/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'CURD-Django', #Database Name 'USER': 'postgres', #Your Postgresql user 'PASSWORD': 'admin', #Your Postgresql password 'HOST': '127.0.0.1', 'PORT': '5432', } }
3. Перенесите свой проект. По умолчанию Django предоставляет некоторые миграции.
(hello-world-django) bash-3.2$ python3 manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying auth.0012_alter_user_first_name_max_length... OK Applying sessions.0001_initial... OK
После успешной миграции вы должны увидеть такую схему базы данных.
MySql
База данных MySQL также широко используется в отрасли. Mysql также является системой управления реляционными базами данных. Mysql SQL широко используется в приложениях электронной коммерции, хранилищ данных и ведения журналов. Mysql — это веб-база данных. Создание базы данных с помощью Mysql в Django аналогично тому, что мы сделали для PostgreSQL. Здесь я использую PhpMyAdmin, который является клиентом Mysql.
1. Создайте новую базу данных в PhpMyAdmin.
2. Соединение нашего проекта helloworld Django с нашим клиентом Mysql
Теперь откройте файл helloworld/settings.py
. Прокрутите до раздела базы данных. Там вы должны увидеть приведенный ниже код.
# Database # https://docs.djangoproject.com/en/1.11/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
Теперь мы должны заменить приведенный выше код нашими учетными данными для подключения к Mysql. Обновленный код должен выглядеть так, как показано ниже.
# Database # https://docs.djangoproject.com/en/1.11/ref/settings/#databases] DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', #Mysql Client Adapter 'NAME': 'CURD-django', #Database Name 'USER': 'root', #Your Postgresql user 'PASSWORD': 'root', #Your Postgresql password 'HOST': '127.0.0.1', 'PORT': '3306', } }
3. Установите клиент Mysql.
Мы инициализировали настройки адаптера. Но еще не скачал. Загрузите клиент MySQL с командой.
(hello-world-django) bash-3.2$ pip install mysqlclient
После установки откройте файл helloworld/__init__.py
и добавьте в него приведенный ниже код.
import pymysql pymysql.install_as_MySQLdb()
4. Перенесите свой проект.
(hello-world-django) bash-3.2$ python3 manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying auth.0012_alter_user_first_name_max_length... OK Applying sessions.0001_initial... OK
Теперь вы должны увидеть схему базы данных по умолчанию в PhpMyAdmin.
Удачного кодирования!