问题标签 [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 回答
2550 浏览

python - 蒸馏器迁移错误烧瓶

我正在使用此处找到的指南制作测试博客。它相当全面。但是,我在进行蒸馏迁移时遇到了麻烦。我可以删除所有版本,并启动一个包含所有列的新数据库。但是,当我添加一个新列时,我遇到了问题。这是我的代码models.py

模型.py

这一切都很标准。但是,如果我要在我的 People 表中添加一个随机列,如下所示:

然后运行 ​​a python manage.py db migrate(工作正常)然后运行 ​​apython manage.py db upgrade然后我收到以下错误:

它甚至没有提到我在堆栈跟踪中创建的列的名称,所以这让我相信其他表有问题。它提到了索引的删除,但我在迁移中没有做任何类似的事情,只是在表中添加一列People。是我不明白的蒸馏器吗?

就像我说的那样,当我启动一个全新的数据库并加载配置时,它可以完美地找到。只有当我进行更改并尝试迁移时,alembic 才会向我抛出这些错误。有谁知道为什么会这样?

编辑

以防万一人们需要查看我的config.py文件:

配置文件

0 投票
2 回答
6146 浏览

transactions - 在事务中运行 alembic 升级迁移

是否alembic upgrade head在事务内部运行,以便所有数据库更改成功或失败?如果不是,为什么要这样设计?

0 投票
4 回答
4555 浏览

python - 向现有数据库添加命名约定

我正在使用 sqlalchemy 并尝试将 alembic 集成到数据库迁移中。

我的数据库当前存在,并且定义了许多没有名称的 ForeignKeys。我想添加一个命名约定以允许影响 ForeignKey 列的迁移。

我已将此处给出的命名约定添加到我的 models.py 文件的顶部: SQLAlchemy Naming Constraints

我已经按照教程说明设置了 alembic/env.py,将模型的元数据输入到 target_metadata 中。

当我跑

我收到以下错误:sqlalchemy.exc.InvalidRequestError:包括 %(constraint_name)s 令牌的命名约定要求明确命名约束。

在文档中,他们说“即使我们只使用 Column.unique 标志,相同的功能 [使用命名约定为列生成名称] 也会生效:” 1,所以我认为不应该有问题(他们继续使用未命名的 ForeignKey 举一个例子)。

我是否需要返回并给我所有的约束明确的名称,或者有没有办法自动做到这一点?

0 投票
12 回答
26556 浏览

python - 是否可以将 alembic 连接字符串存储在 alembic.ini 之外?

我将 Alembic 与 SQL Alchemy 一起使用。对于 SQL Alchemy,我倾向于遵循一种模式,即不将连接字符串与版本化代码一起存储。相反,我有secret.py包含任何机密信息的文件。我把这个文件名扔进我的.gitignore,所以它不会出现在 GitHub 上。

这种模式很好用,但现在我开始使用 Alembic 进行迁移。看来我无法隐藏连接字符串。而是在 alembic.ini 中,将连接字符串作为配置参数

我担心我会不小心为我的数据库提交一个包含用户名/密码信息的文件。我宁愿将此连接字符串存储在一个地方,并避免意外将其提交给版本控制的风险。

我有什么选择?

0 投票
0 回答
2220 浏览

python - Flask-Migrate:显然未检测到列添加/删除,而是重新创建表

我在带有 Postgresql 后端的 Flask 应用程序中使用 Flask-Migrate。问题是,在对我的模型进行更改后,比如添加或删除列,在我尝试过的任何修订或迁移中,我总是得到以下结果

并且其中的每个脚本都migrations/versions包含用于创建表的代码,例如

我期待类似的东西

我正在按照此博客中的说明进行操作。相关设置如下:

我遵循了这些问题中给出的一些建议:(Alembic/Flask-migrate 无法识别数据库结构)和(在使用 Flask-SQLAlchemy 进行迁移的 Alembic 自动生成中未检测到任何变化),但没有任何运气。

知道我做错了什么吗?

提前致谢。

解决了

我刚刚发现了问题。我喜欢使用数据库模式,我正在这样做

似乎alembic不知何故不知道模式的固有范围,因此它一直在重新创建表。有点:没有表foo- 在最外面的全局“模式”或范围内 - 所以我必须到create那个表。即使在第一次迁移正确创建表之后,这种情况也会发生。当然,不出所料地执行了第二次迁移

我刚刚放弃了上面的声明,现在我看到了正确的变化。

我不知道我是否必须做一些特别的事情来支持计划。也许这只是一个不受支持的功能。

0 投票
2 回答
1452 浏览

python - Alembic 无法导入烧瓶应用程序 ORM 模型

用例:

我正在尝试创建一个迁移脚本,该脚本将创建一个表(这将建立多对多关系),然后使用数据库中的外键填充该表。

为此,我试图加载我的烧瓶应用程序 ORM 模型,以便我可以在我的迁移脚本中使用它们。

目录结构

如果我运行 alembic upgrade +1

我明白了

我在做什么

我在放置

在我的升级脚本中,然后运行命令

我收到一个错误的堆栈跟踪

如果没有此尝试导入,表升级和降级功能将正常运行。

我的期望

我希望能够导入包,更重要的是 *my_project.models* 以便我可以使用 ORM 来填充我的新表。

注意: 我不能使用相对包包含,因为我正在运行 alembic 而不是调用 python。因此, python -m 参数对我没有用。

0 投票
4 回答
32944 浏览

python - alembic 修订 - 多头(由于分支)错误

我有一个应用程序,我想今天为它创建一个新的迁移。当我跑

我收到一条消息

跑步

什么都不给

我是alembic的新手。有 2 个开发人员在开发这个应用程序,我们有 2 个 git 分支 - master 和 development(我不确定这是否与它有关)。

关于这是什么的任何线索?

0 投票
1 回答
762 浏览

sqlalchemy - Alembic 修订 ID 代表什么?

我刚刚开始研究 Alembic,来自 Django,我们让South迁移我们的数据库模式(即将包含在内),它使用一个友好的旧固定宽度数字0037_fix_my_schema.py来谈论迁移的顺序应用,我自然对 Alembic 的修订 ID 很感兴趣。是否有 DAG 支持 Alembic,或者有人可以在这方面简要介绍其内部结构吗?

0 投票
2 回答
27968 浏览

python - 如何在alembic中使用alter_column?

我正在用 alembic 编写迁移,但对我来说似乎不可能将 server_defaults 的值从某事更改为空。

我的代码:

如果我在迁移后检查,默认仍然是 NOW()

0 投票
1 回答
3618 浏览

python - Alembic 和枚举类型

为什么下面的代码不起作用?