В платформе с использованием Flask, SQLAlchemy и Alembic нам постоянно нужно создавать новые отдельные экземпляры с собственным набором ресурсов, включая базу данных.SQLAlchemy, Alembic и новые экземпляры
При создании нового экземпляра SQLAlchemy's create_all
предоставляет нам базу данных со всеми обновлениями до момента создания экземпляра, но это означает, что этот новый экземпляр не имеет истории миграции, которая имеет более старые экземпляры. В нем нет таблицы исправлений Alembic, указывающей на последнюю миграцию.
Поэтому, когда пришло время обновить как старые экземпляры (с историей миграции), так и новый экземпляр без истории переноса, мы должны либо предоставить экземпляру new пользовательский набор ревизий (игнорируя старые миграции, чем сама база данных), либо создать историю фальшивых миграций для него и использование глобального набора миграций. Пару раз, что это произошло, мы сделали последнее.
Выполняет корневую миграцию, которая устанавливает всю базу данных так же, как и до первой миграции, а затем запускает все миграции вместо create_all - лучший вариант для начальной загрузки базы данных новых экземпляров?
Я забочусь о масштабируемости этого, поскольку количество миграций увеличивается.
Возможно ли еще один вариант?
Спасибо за ответ, то, что вы описали, в основном то, что мы сделали до сих пор, только вручную. Создает ли штамп таблицу, если она еще не существует? – RobertoCuba
Да, да. Просто протестировал его. –