问题标签 [flask-migrate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2631 浏览

postgresql - Alembic 没有产生正确的变化

我正在使用Flask-Migrate==2.0.0. 它没有正确检测到更改。每次我运行python manage db migrate它都会为所有模型生成一个脚本,尽管它们已在以前的版本中成功添加。我在表中添加了两个新列,迁移修订应该只有这两个新列,而不是所有表都添加到其中。有什么我想念的吗?

编辑 1

这是正在发生的事情。我将 Flask_Migrate 添加到我的项目中。

Flask-Migrate 为模型生成的表以及带有修订的 alembic_version 表

985efbf37786

在这之后,我做了一些改变。我在我的一个表中添加了两个新列并再次运行该命令

它产生了新的修订

934ba2ddbd44

但不是只添加这两个新列,而是包含所有表的脚本以及这两个新列。所以例如在我的第一次修订中,我有这样的东西

第二个修订版也包含完全相同的代码。我不明白为什么它已经生成了。

我用谷歌搜索了一下,我的问题看起来就像这样https://github.com/miguelgrinberg/Flask-Migrate/issues/93但我没有使用 oracle DB。我正在使用 Postgresql。另外我不知道它是否有任何影响,但我没有在默认公共架构中创建我的表,而是创建两个新架构(schema_a 和 schema_b),因为我有很多表(大约 100 个)。所以只是安排他们。

编辑 2

第一个问题似乎已经通过添加解决了

包含模式=真

在 env.py 中。

现在新的迁移并没有尝试再次创建已经存在的表,但它在外键方面存在一些问题。每次我创建一个新版本时,它都会尝试删除已经存在的外键,然后尝试添加它们。日志看起来像这样

我尝试将名称添加到每个外键约束,但这没有任何效果。

0 投票
3 回答
3819 浏览

python - 使用 SQLAlchemy/Alembic 时如何检查是否有挂起的迁移?

我们正在使用 SQLAlchemy 和 Alembic(以及 Flask-SQLAlchemy 和 Flask-Migrate)。如何检查是否有待处理的迁移?

我试图检查 Alembic 和 Flask-Migrate 的文档,但没有找到答案。

0 投票
1 回答
859 浏览

flask - 在多个项目中使用 Alembic 迁移

我有两个使用 Flask-Migrate 和 Alembic 的 Flask 应用程序。

共有三个表,其中一个表在两个 Flask 应用程序之间共享,由shared_models.py

我遇到了共享表被其中一个项目 alembic_version 标记的困难,然后另一个项目抱怨它,尽管shared_models.py文件相同。

处理这种环境的好策略是什么?

0 投票
5 回答
12586 浏览

python - Flask-Migrate 命令“flask db init”找不到应用程序文件

首先,我正在关注此处发布的 Python Flask 教程:https ://scotch.io/tutorials/build-a-crud-web-app-with-python-and-flask-part-one 。

一切都很顺利,直到执行的“迁移”部分:

...失败并出现以下错误:

我知道 $FLASK_APP 环境变量已设置,因为此命令执行良好:

任何人都可以建议为什么在运行应用程序时执行得很好,但在尝试创建迁移存储库时却没有?

我可以在该主题的其他地方找到最接近的内容:Flask can't find app file,但在这两种情况下,预先等待python -m对我来说都不起作用。

0 投票
1 回答
1358 浏览

python - 如何在 Flask Migration 中定义整数数组以创建新表

我想为我的 Postgresql 数据库使用 Flask 迁移工具创建表。

我写了我的烧瓶模型如下:

我想为 allow_center_list 列使用整数数组。

当我尝试执行“flask db upgrade”命令时(在执行 init 和 migrate 命令之后),我收到如下错误:

请指导我如何在 Flask SQLAlchemy 模型中定义整数数组。

0 投票
0 回答
936 浏览

python - SQLAlchemy 迁移不创建表

我正在关注Miguel 的教程。有一个迁移脚本来创建迁移。db_migrate.py

并用于升级它拥有的数据库db_upgrade.py

现在每次我运行db_migrate.py它都会创建一个包含相同代码的迁移文件:

如果我运行db_upgrade.py,它只会增加migrate_version数据库中表中的迁移版本,但不会创建新表。我需要手动编辑迁移文件来创建表吗?

配置:

这是我的models.py

0 投票
1 回答
1776 浏览

python - 让 Flask-Migrate 忽略映射为 Flask-SQLAlchemy 模型的 SQL 视图

我正在使用 Flask-SQLAlchemy 定义我的模型,然后使用 Flask-Migrate 自动生成迁移脚本以部署到 PostgreSQL 数据库上。我在我的应用程序中使用的数据库上定义了许多 SQL 视图,如下所示。

但是,Flask-Migrate 现在为视图生成一个迁移文件,因为它认为它是一个表。如何正确让 Flask-Migrate / Alembic 在自动生成期间忽略视图?

SQL 视图名称:vw_SampleView有两列:idrowcount

这意味着我现在可以进行如下查询:

我尝试按照 http://alembic.zzzcomputing.com/en/latest/cookbook.html上的说明进行操作,并将该info = dict(is_view=True)部分添加到我的模型中,并将以下位添加到我的env.py文件中,但不知道从这里去哪里。

0 投票
0 回答
725 浏览

flask - 使用 Flask 应用程序打包 Flask-Script 和 Flask-Migrate 实用程序

我有一个使用flaskwith的应用程序设计flask-sqlalchemy。为了在模型更改时控制数据库迁移,我使用flask-migrate包装 alembic 并在flask-script管理上下文中使用。

我正在尝试决定如何拆分包分发以实现以下目标

  1. 主应用程序包的最小依赖项集
  2. 允许为迁移和部署分发管理脚本和测试数据,可能使用辅助包,具体取决于主应用程序模块

项目结构如下

我的manage.py看起来像很多以下。这就是我通过将alembic对象附加到. 这也允许我在与一般烧瓶/应用程序配置相同的配置文件中控制迁移配置(因为配置上下文由管理器和 with 推送)flask-migrateMigratemanage.pyMigrate.init_app

应用程序子管理器myapp.database.database_manager启用这样的命令,例如python manage.py database create/drop/test_data使用 sqlalchemy 创建表并使用目录中的 test_data 填充表tests/,但不挂钩任何迁移脚本,并允许我使用应用程序配置上下文python manage.py migration init/revision/migrate/...执行flask-migrate/命令。alembic

我正在尝试分发此应用程序以部署在我们的内部服务器上。有两个分发用例,因为它们目前正在使用

  1. 安装新服务器

    • 安装源分发
    • 创建新的配置文件以反映数据库主机等。
    • 用于manage.py -c /path/to/config创建数据库表database create
    • 将 HTTP 服务器指向 wsgi.py
  2. 更新现有服务器

    • 更新源分布
    • 用于使用manage.py -c /path/to/server/config migration upgrade当前应用上下文提取数据库
    • 服务器继续指向wsgi.py

我想将此分发移动到轮子/包,以便我可以在我们的公司内部网上自动部署,所以我在这里看到的是我想将我的包拆分为myapp只有 Flask 框架依赖项和 wsgi 入口点的主包其中myapp-manage包括manage.pytestsmigrations目录。

因此,在完美世界中,应用程序将安装在具有全局配置文件的系统上,并且特定的管理用户将有权访问管理包以执行升级。

现在,我正致力于将分发与setup-app.pysetup-manage.py同一源分发中创建两个单独的包分开。有没有更合适的方法来使用烧瓶应用程序打包迁移和管理脚本?我已经翻阅了文档,虽然它很清楚如何打包烧瓶应用程序,但管理脚本和迁移的分发策略不太清楚。

0 投票
0 回答
583 浏览

python - Flask-Migrate Alter Table 错误

我一直在为这个错误挠头一段时间,我似乎无法弄清楚出了什么问题。也许你能帮忙?

使用Flask-Migrate我修改了我的模型并尝试相应地迁移数据库。

我遇到的错误似乎在两个特定模型UserTransaction.

运行后

我收到此错误:

这是我设置模型的方法,请注意表名覆盖

我已使用本指南设置具有外键和关系的模型。

我已使用此博客文章来帮助诊断我的问题,但无济于事。你可能知道我错过了什么吗?

提前致谢。

0 投票
1 回答
360 浏览

heroku - Flask-migrate 和 Flask-script 为 heroku 设置 Procfile?

我正在使用 flask-migrate 和 flask-script 来初始化数据库并运行迁移。

在大多数情况下,我使用 flask-migrate 网站上的 flask-script 示例并运行类似python manage.py db init.

我的问题是如何将它添加到我的 procfile 以进行 heroku 部署?