Обновление схемы Sqlite3 с использованием alembic

У меня есть приложение C ++ (Linux), которое использует sqlite3 db через API. В настоящее время БД поставляется вместе с двоичными файлами в RPM. В этой БД уже есть все необходимые таблицы. Мое приложение не пытается изменить какую-либо схему во время работы.
Теперь я должен поддерживать обновления схемы БД для следующих версий, поскольку схема может измениться в будущем. Есть идеи, как мне этого добиться?

0

Решение

Alembic может определенно делать то, что вы хотите, но, поскольку ваше приложение находится на C ++, а не на python, поддержание всех декларативных моделей ваших таблиц на python, скорее всего, не стоит этих усилий. Поскольку вы используете только sqlite, я бы предложил написать операторы обновления SQL вручную, а затем взять лист из книги по алфавиту и создать таблицу версий с одной записью — текущей версией базы данных.

Когда ваше приложение запускается, проверьте текущую версию БД и запустите сценарии миграции по порядку, пока вы не перенесете базу данных в последнюю версию.

PS: Сделайте себе одолжение, а также пишите сценарии понижения. Это будет удобно, если вам понадобится откат по любой причине

0

Другие решения