Прежде всего, вы не должны загружать какие-либо конфиденциальные данные в ваш репозиторий. Сюда входят пароли базы данных, секретный ключ Django или сама база данных в случае SQLite.
Отвечая на ваш первый вопрос, не должно возникнуть никаких проблем при переходе с SQLite на MySQL. Django обрабатывает миграции исключительно, а SQLite имеет меньше возможностей, чем MySQL. Для переноса ваших данных в базу данных mysql вы можете использовать django dumpdata и loaddata .
Теперь ваш второй вопрос немного сложнее , Вы всегда можете открыть свою базу данных для Inte rnet, но обычно это не очень хорошая идея, если вы точно не знаете, что делаете, и не знаете, как правильно ее защитить. Однако, если вы go таким образом, вы можете просто изменить параметры базы данных в файле настроек, чтобы они указывали на c IP-адрес базы данных вашей базы данных MySQL и добавить имя базы данных, пользователя и пароль.
Тем не менее, я рекомендую иметь одну базу данных для разработки в вашем устройстве разработки P C и другую на вашем рабочем сервере, которая находится за брандмауэром и доступ к которой возможен только через localhost. Я не думаю, что вам нужна база данных в вашем устройстве p c, чтобы всегда быть в курсе, если у вас есть некоторые примеры данных, которых должно быть достаточно.
Итак, вместо записи конфиденциальных данных в настройки файл, который вы можете иметь secrets.json
файл в root вашего проекта, который выглядит следующим образом:
{
"secret_key": "YOURSUPERSECRETKEY",
"debug": true, TRUE IN YOUR DEV PC, FALSE IN YOUR PROD SERVER
"allowed_hosts": ["127.0.0.1" , "localhost", "YOUR"],
"db_name": "YOURDBNAME",
"db_user": "YOURDBUSER",
"db_password": "YOURDBPASSWORD",
"db_host": "localhost",
"db_port": 3306
}
Этот файл должен быть включен в ваш .gitignore
, чтобы он не передавался на ваш хранилище, и у вас будет один в вашем локальном p c и другой с другими настройками на вашем производственном сервере (вы можете использовать vi или nano для создания файла).
Затем в вашем файле settings.py
вы может сделать следующее:
import json
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
try:
with open(os.path.join(BASE_DIR, 'secrets.json')) as handle:
SECRETS = json.load(handle)
except IOError:
SECRETS = {}
SECRET_KEY = SECRETS['secret_key']
ALLOWED_HOSTS = SECRETS['allowed_hosts']
DEBUG = SECRETS['debug']
...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': SECRETS['db_name'],
'USER': SECRETS['db_user'],
'PASSWORD': SECRETS['db_password'],
'HOST': SECRETS['db_host'],
'PORT': SECRETS['db_port'],
}
}