Flask -migrate: Как мне управлять БД других установленных модулей - PullRequest
1 голос
/ 15 апреля 2020

Я в процессе настройки Flask - мигрировать на существующий проект. Мой проект также использует модуль Taskflow (https://github.com/openstack/taskflow).

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

Не удается найти ревизию, указанную в '397d0bf4d081'

[Это происходит, когда я обновляю бэкэнд-соединение потока задач - если это любое значение]

Мне не ясно, как настроить миграцию для управления таблицами пакетов / модулей, установленных в проекте.

Когда я писал этот вопрос, я получил Идея указать модуль на его собственный DB.

Я попробовал это, и это работает. Вопрос сводится к тому, что является правильным подходом - следует ли управлять требованиями к БД для установленных модулей, указав для них отдельную базу данных (кажется, что это правильно).

1 Ответ

1 голос
/ 15 апреля 2020

Проблема в том, что поток задач использует Alembi c для отслеживания миграций своей собственной базы данных, поэтому ваша история Alembi c (через Flask -Migrate) конфликтует с историей Taskflow.

У вас есть два параметры:

  • проще всего использовать отдельные базы данных, как вы это сделали.
  • если вы хотите использовать одну и ту же базу данных, то вам нужно сделать две вещи: во-первых, использовать опция include_object Alembi c в вашем проекте для настройки ваших миграций на игнорирование таблиц, поддерживаемых Taskflow, и, во-вторых, настройку имени таблицы версий Alembi c на что-то отличное от значения по умолчанию alembic_version , который я предполагаю, что Taskflow использует.
...