Как подключить приложение Django к базе данных

Управление базой данных с помощью Django

Django официально поддерживает пять баз данных.

  1. PostgreSQL
  2. MariaDB
  3. MySQL
  4. Oracle
  5. SQLite

В этом блоге я объясняю, как подключить Django PostgreSQL, Mysql, and SQLite к базе данных. Я уже создал проект helloworld на Django. Если вам нужна помощь в создании базового приложения Django, загляните в мой предыдущий блог (Приложение Hello World с Django).

SQLite

SQLite — это база данных с открытым исходным кодом, которая помогает взаимодействовать с реляционными базами данных. SQLite хранится в одном файле. Это упрощает совместное использование баз данных. По умолчанию Django использует базу данных SQLite.

  1. Чтобы подключиться к базе данных 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.

  1. Создайте новую базу данных в pgAdmin.
См. также:  Разработка языковых привязок с помощью xtensor

 

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.

См. также:  Функция Azure Python. Прочитать Blob построчно

Удачного кодирования!

Понравилась статья? Поделиться с друзьями:
IT Шеф
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: