Управление базой данных sqlite с помощью git - PullRequest
0 голосов
/ 16 октября 2019

У меня есть небольшой проект, в котором в качестве базы данных указывается sqlite.

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

Вопрос в том, что многие из этих сред на самом деле не используют файл my_project.sqlite3 , поставляемый с исходным репозиторием, который мы контролируем версиями с помощью git . Как включить изменения в развернутую базу данных? Подходит ли сценарий, который устанавливает базу данных для этого сценария? Между тем стоит отметить, что существуют учетные данные безопасности, которые не должны появляться в сценарии незашифрованными способами, что усложняет ситуацию.

1 Ответ

0 голосов
/ 16 октября 2019

что многие из этих сред на самом деле не используют файл my_project.sqlite3, поставляемый с исходным хранилищем

Если ваша платформа развертывания не поддерживает выбранную вами базу данных, то ваша среда разработкиВероятно, следует перейти к использованию одной из баз данных, которые они поддерживают. Можно запускать разные базы данных при разработке и производстве, но это кажется источником головной боли.

Я обнаружил ряд статей, в которых говорится, что Heroku просто не поддерживает SQLite в рабочей среде, и вместо этого рекомендует Postgres.

Как включить изменения в развернутую базу данных? Подходит ли сценарий, который устанавливает базу данных для этого сценария?

Я предполагаю, что вы просто извлекаете данные из одной базы данных для передачи в другую, так что да, если этот сценарий является одноразовой пакетной операцией при каждом обновлении кода, то это должно бытьхорошо. Вам понадобится что-то еще, если вы добавляете / манипулируете данными в рабочей среде, а затем экспортируете их в свой git.

Между тем, стоит заметить, что существуют учетные данные безопасности, которые не должны появляться в скрипте в незашифрованном виде

Переменная среды должна решить эту проблему. Вы устанавливаете на хост-компьютере переменные среды с вашими учетными данными, а затем просто извлекаете их в сценарии. Вы ищете что-то вроде этого:

# Set environment vars
os.environ['USER'] = 'username'
os.environ['PASSWORD'] = 'password'

# Get environment vars
USER = os.getenv('USER')
PASSWORD = os.environ.get('PASSWORD')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...