Я использую Flask-SQLAlchemy для определения своих моделей, а затем с помощью Flask-Migrate для автоматического создания сценариев миграции для развертывания в базе данных PostgreSQL. Я определил ряд SQL-представлений в базе данных, которые я использую в своем приложении, как показано ниже.Получение Flask-Migrate для игнорирования SQL-представлений, которые отображаются как модели Flask-SQLAlchemy
Однако Flask-Migrate теперь создает файл миграции для представления, поскольку он считает его таблицей. Как правильно получить Flask-Migrate/Alembic, чтобы игнорировать представление во время автогенерации?
SQL Просмотр названий: vw_SampleView
с двумя колонками: id
и rowcount
.
class ViewSampleView(db.Model):
__tablename__ = 'vw_report_high_level_count'
info = dict(is_view=True)
id = db.Column(db.String(), primary_key=True)
rowcount = db.Column(db.Integer(), nullable=False)
Это означает, что теперь я могу делать запросы, как так:
ViewSampleView.query.all()
Я попытался следующие инструкции по http://alembic.zzzcomputing.com/en/latest/cookbook.html и добавил info = dict(is_view=True)
часть моей модели и следующие биты в моем env.py
файл, но дон» не знаю, куда идти отсюда.
def include_object(object, name, type_, reflected, compare_to):
"""
Exclude views from Alembic's consideration.
"""
return not object.info.get('is_view', False)
...
context.configure(url=url,include_object = include_object)
Работал как шарм! Обратите внимание также на себя и других читателей, что context.configure устанавливается в двух местах в env.py: run_migrations_offline() и run_migrations_online() –