какие-то данные, которые должны быть в бд при работе с проектом, типо справочная информация (например, единицы измерения (кг, метры, сантиметры, штуки)). Как их лучше заносить в бд?
Сейчас они зонясятся с помощью миграций (alembic), создаю просто миграцию, в которой операция вставки в бд, но
Они могут менятся (например колонка какая-то добавилась - и тут уже приходится миграцию новую делать и старую откатывать) и данные могут добавляться (тут просто приходится ещё одну миграцию писать).
Какие ещё есть варианты решения такой задачи? думаю, можно при старте сделать функцию, которая всё проверяет и заполняет если что
Алембик не должен заносить никаких данных в проект, только создавать структуру базы и вносить в нее изменения. А как вносить данные в базу... Ну, во первых можно реализовать это в самом проекте, какая-то панель для добавления, или админка. Можно напрямую SQL запросами, либо используя утилиты для работы с СУБД.
Если исходные данные нормализованы то нет проблем написать на том же питоне скрипт, который будет загружать в твою базу
а как и когда мне запускать такой скрипт, у меня веб приложение - насколько норм сделать это по эндпоинту для админа?
Что мешает сделать эндпоинт, или одностаничник с загрузкой файла с данными?
запускать скрипт можно по расписанию, или сделать какой-то триггер на наличие файлов в укказанной папке. Это ещё один костыльный способ
не, это уже слишком
дело хозяйское. Но звучит прям так себе. 🌝
и всё-таки я не понимаю, почему теоретически может быть плохо вставлять данные в миграциях
Алембик - это средство для миграции базы данных. Миграции, это что-то похожее на инструмент по контролю версии для БД и внесению изменений в нее. И этот инструмент должен быть использован только контроля и внесения изменений в структуру базы данных и не более.
почему под версией БД ты подразумеваешь только её структуру? Данные же тоже являются её частью
Сохранностью данных твоей базы должна заниматься система бекапирования, а не миграция
Это совершенно оторванные понятия. Структура базы и данные в ней хранящиеся. первое - более статичное, до момента внесения в структуру изменений. Второе 'данные' являются динамическими, так как подвергаются изменениям (добавляются, удаляются, обновляются)
я думаю проблема в том, что понятие миграция бд очень размытое и не понятно что в него входит
Миграция. 1 понятие - перенос данных с источника в источник. 2 - внесение изменений в структуру.
Обсуждают сегодня