Как правильно поделиться информацией о базе данных в Github, используя Django и PostgreSQL?
У меня есть задание, в котором мне нужно настроить сервер базы данных, используя Python Django и PostgreSQL. Мне нужно разместить проект на Github, и оценщик будет использовать мой репозиторий для проверки моего проекта.
В моем файле setting.py
у меня есть следующие строки:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'CourseDB',
'USER': 'postgres',
'PASSWORD': '123',
'HOST': 'localhost',
'PORT': '5432'
}
}
Что нужно сделать, чтобы данные в моем файле были правильными для стороны грейдера?
Нужно ли им будет создать базу данных с заданным именем, пользователем и паролем, как в моем файле?
Я думаю, что, возможно, для имени базы данных я могу добавить в readme, чтобы сначала запустить CREATE DATABASE CourseDB
. Но опять же, я не знаю их пользователя и пароль на их машине, поэтому я не знаю, что должно быть написано в моем файле, чтобы мой код работал на их машине.
Я следовал этому уроку на YouTube, чтобы создать свой файл.
Если вам не нужна какая-то специфическая функциональность Postgres, вы можете использовать стандартный бэкенд SQLite:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
Django автоматически создаст файл базы данных. Настройка/пользователь/пароль не требуются.
В общем, хорошей практикой является сохранение всех учетных данных, чувствительных к БД, в settings.py
с помощью env vars, таких как следующие:
import os
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.environ['DATABASE_NAME'],
'USER': os.environ['DATABASE_USER'],
'PASSWORD': os.environ['DATABASE_PASSWORD'],
'HOST': os.environ['DATABASE_HOST'],
'PORT': os.environ['DATABASE_PORT'],
}
}
В качестве встроенной поддержки поддерживаются несколько СУБД (см. официальную документацию здесь), включая PostgreSQL, MariaDB, MySQL, Oracle и SQLite, а также ряд дополнительных, предоставляемых сторонними разработчиками.
Если вы выбираете бэкенд SQLite (безусловно, лучшая альтернатива для быстрой разработки и MVP), имейте в виду, что есть некоторые отличия, характерные для бэкенда SQLite, которые вы должны принять во внимание (например, не поддерживаемые функции)