Как 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 и т.д.