问题标签 [alembic]

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 投票
1 回答
6990 浏览

python - Alembic 自动生成空的 Flask-SQLAlchemy 迁移

我正在使用 Alembic 来处理 Flask 的迁移。alembic revision --autogenerate理论上,应该根据我的数据库中的更改自动生成迁移。但是,Alembic 只是使用上述命令生成空白迁移。

有一个与这个问题非常相似的问题,问题是没有导入正确的模型。但是,我已经从我的 Flask 应用程序中导入了模型,如下所示env.py

以及导入的数据库元数据env.py('start' 是我的 Flask 应用程序主文件的名称):

然后运行alembic revision --autogenerate -m "initial_rev"会生成一个空迁移,尽管我的 Flask 应用程序会有所不同:

编辑

这是一个要点,它显示了我的应用程序的文件结构,以及一些附加代码。似乎问题是 Alembic 不喜欢在database.py没有先在__init__.py. 但是,当使用蓝图时这是不可能的(因为周期性导入),在这个 SO 答案中解释:https ://stackoverflow.com/a/9695045/353878 。

那么问题来了,在同时使用 Flask 蓝图的情况下如何使用 Alembic?

编辑#2

我什至尝试打印db.metadata.sorted_tables,以确保正确导入数据库元数据。果然,整个数据库模式通过管道传输到终端。那么为什么 Alembic 会生成空白的升级/降级功能呢?

编辑#3

我已经得出结论,这个问题与 和 的差异有关db.init_app(app)db = SQLAlchemy(app)但我不太确定是什么导致了这个问题。为了测试这个理论,我替换from database import db为. 可能是个坏主意,但我想看看出于调试目的会发生什么。env.pydb = SQLAlchemy(app)

Alembic 自动生成并填充了 upgrade() 和 downgrade() 方法——除了它们被颠倒了!upgrade()删除了我的所有三个表,同时downgrade()使用所有正确的列和元数据创建它们。我不知道为什么会这样,但我希望它对试图解决这个问题的人有所帮助。

0 投票
1 回答
6292 浏览

python - 字段默认时间戳设置为表创建时间而不是行创建时间

使用 SQLAlchemy、alembic 和 postgres,当尝试将列设置为行创建时间时,我最终得到的是一个字段,该字段默认为创建表本身的时间,而不是创建行的时间。

型号代码:

Alembic 将其翻译为:

Postgres 中的专栏:

我应该怎么做才能默认为行创建时间?

0 投票
1 回答
1483 浏览

python - Flask 的 Alembic 迁移

在过去的 7 个小时里,我一直在尝试为我的 Flask 应用程序配置 Alembic 迁移系统,但没有成功。关于我做错了什么的任何想法?

我已经尝试了在这里找到的所有解决方案,但它们似乎对我不起作用。

ImportError:没有名为配置的模块

另外,请注意,我正试图让它在 Heroku 上工作

我的 env.py 文件的一部分:

我会很感激我能得到的任何帮助,或者对更简单的解决方案的建议,以便使用 Flask 轻松迁移。

谢谢。


这就是我在 Heroku 上添加迁移的方式。这个对吗?

0 投票
2 回答
2280 浏览

sqlalchemy - 在 Alembic 迁移中访问模型

我正在为烧瓶+sqlalchemy 项目使用alembic 迁移,并且在我尝试查询alembic 中的模型之前,一切都按预期工作。

上面的代码在添加列后卡住了,永远不会出来。我想这StoredFile.query是尝试使用与 alembic 使用的数据库连接不同的数据库连接。(但是为什么?我错过了什么env.py吗?)

我可以通过使用解决它,op.get_bind().execute(...)但问题是如何直接在 alembic 中使用模型?

0 投票
11 回答
95224 浏览

alembic - 目标数据库不是最新的

我想为 Flask 应用程序进行迁移。我正在使用 Alembic。

但是,我收到以下错误。

在网上,我读到它与此有关。 http://alembic.zzzcomputing.com/en/latest/cookbook.html#building-an-up-to-date-database-from-scratch

不幸的是,我不太明白如何更新数据库以及我应该在哪里/如何编写链接中给出的代码。

0 投票
1 回答
401 浏览

python - alembic 将允许版本下的 sql 文件吗?

在 sqlalchemy-migrate 存储库中,我们可以将 .sql 文件而不是 .py 文件放在版本文件夹下,用于升级/降级数据库架构。

在alembic中是否存在相同的功能?如果是的话,有人可以解释一下该怎么做吗?

谢谢

0 投票
2 回答
5106 浏览

python - 如何清理不完整的蒸馏器运行

我正在尝试使用带有 MySQL 引擎的 alembic 来执行在线迁移。我发现当我的 onupgrade() 方法中的操作失败时,我的数据库会陷入不一致的状态,直到我手动清理在 onupgrade() 失败之前发生的任何操作之前,我才能使用 alembic

例子:

因此,如果我运行它并且 op.add_column 失败,即使我修复了 add_column 行,现在“sometable”也存在,所以第一个操作总是会失败。我无法运行我的降级脚本,因为 alembic 从未更新过版本,因为它没有完成升级。

我在想是否有办法强制运行我的 ondowngrade(),这可能很有用。我不得不忽略错误,因为肯定会有一些错误。就像放弃“secondtable”一样。我无论如何都找不到这样做。

任何人有一个很好的方法来处理这个?

0 投票
2 回答
2130 浏览

django - Alembic Django Flask 迁移数据库

我有一个在 django 和烧瓶之间共享的数据库。

在烧瓶应用程序中,我使用 sqlAlchemy 并使用 Alembic 迁移数据库。但是当我迁移数据库并使用命令时:

$ alembic revision --autogenerate -m "some message"

它将自动删除 django 创建的所有表:

如何配置 Alembic 使数据库迁移不会删除 django 的表?

0 投票
2 回答
1056 浏览

python - 如何在 SQLAlchemy 中表示自定义 PostgreSQL 域?

我开始将 Alembic 合并到我已经使用 SQLAlchemy 表定义的项目中。目前我的数据库架构在我的应用程序外部进行管理,我想将整个架构放入我的表定义文件中。

在 PostgreSQL 中,我使用自定义域来存储电子邮件地址。PostgreSQL DDL 是:

如何在 SQLAlchemy 中表示该域的创建以及将其用作列数据类型?

0 投票
3 回答
19300 浏览

python - 使用 alembic 获取表值并更新到另一个表。

我有oauth secretoauth keyclient表中。现在我将它们移动到oauth credentials将在迁移期间创建的表中。Alembic 生成了以下升级模式。

一旦脚本进入clientsconnection.executealembic 脚本挂起。启用后sqlalchemy logsBase.Engine为空。也试过op.execute了,没有运气。

Log

如何使用 alembic 迁移将值从client表复制到表?client_credential