Как Django узнает путь к моей базе данных?

Просто следую учебникам по Django и решил, что буду делать их с Postgresql вместо SQLlite.

Я добавил следующее в свой файл настроек и все заработало:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'django_tutorial',
        'USER': 'django_admin',
        'PASSWORD': 'password123',
        'HOST': '127.0.0.1',
        'PORT': '5432'
    }
}

django_tutorial=> \dt
                     List of relations
 Schema |            Name            | Type  |    Owner
--------+----------------------------+-------+--------------
 public | accounts                   | table | django_admin
 public | auth_group                 | table | django_admin
 public | auth_group_permissions     | table | django_admin
 public | auth_permission            | table | django_admin
 public | auth_user                  | table | django_admin
 public | auth_user_groups           | table | django_admin
 public | auth_user_user_permissions | table | django_admin
 public | django_admin_log           | table | django_admin
 public | django_content_type        | table | django_admin
 public | django_migrations          | table | django_admin
 public | django_session             | table | django_admin
(11 rows)

Мой вопрос заключается в следующем - Как Django узнает, где находится postgresql? Первоначально я думал, что имя должно быть C:\ путь, но ему нужно только имя БД?

Например, в документации о sqllite сказано следующее:

Имя используемой базы данных. Для SQLite это полный путь к файлу базы данных. При указании пути всегда используйте прямые слэши, даже в Windows (например, C:/homes/user/mysite/sqlite3.db).

Как Django узнает, где находится postgresql?

Это не так, это не то, за что отвечает Django. Вы запускаете базу данных PostgreSQL server. Этот сервер слушает порт и знает, где хранятся файлы, содержащие данные. Django будет открывать соединения с этим сервером базы данных и общаться с ним посредством запросов. Таким образом, база данных является отдельным приложением.

Для SQLite это полный путь к файлу базы данных.

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

Часто для сервера базы данных у вас нет доступа к базовым файлам. Например, возможно, что сервер работает на другой машине. Это может быть безопаснее, поскольку хакер, которому каким-то образом удалось получить доступ к веб-серверу, может иметь доступ к файлам и базе данных, получив пароль, но не к другим базам данных, которые работают на том же сервере баз данных, например.

Django подключается к серверу базы данных через сокет (хост : порт), а не через файловую систему (c:\path\to\your\database\server), так что вы можете запускать django и сервер базы данных в разных местах. Это наиболее распространенный метод подключения. Сервер redis, сервер mongodb и т.д.

Вернуться на верх